postchain-client 1.22.0 → 2.0.1

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 (398) hide show
  1. package/README.md +16 -0
  2. package/built/cjs/index.js +2205 -3742
  3. package/built/cjs/index.js.map +1 -1
  4. package/built/esm/index.js +10425 -11683
  5. package/built/esm/index.js.map +1 -1
  6. package/built/index.d.ts +3 -8
  7. package/built/index.js +2 -11
  8. package/built/index.js.map +1 -1
  9. package/built/mocks/handlers.d.ts +1 -1
  10. package/built/mocks/handlers.js +62 -21
  11. package/built/mocks/handlers.js.map +1 -1
  12. package/built/src/ICCF/IccfProofTxMaterialBuilder.d.ts +3 -2
  13. package/built/src/ICCF/IccfProofTxMaterialBuilder.js +23 -10
  14. package/built/src/ICCF/IccfProofTxMaterialBuilder.js.map +1 -1
  15. package/built/src/ICCF/types.d.ts +4 -1
  16. package/built/src/ICCF/utils.js +2 -2
  17. package/built/src/ICCF/utils.js.map +1 -1
  18. package/built/src/blockchainClient/blockchainClient.js +56 -53
  19. package/built/src/blockchainClient/blockchainClient.js.map +1 -1
  20. package/built/src/blockchainClient/clientStub.js +18 -16
  21. package/built/src/blockchainClient/clientStub.js.map +1 -1
  22. package/built/src/blockchainClient/enums.d.ts +5 -0
  23. package/built/src/blockchainClient/enums.js +6 -0
  24. package/built/src/blockchainClient/enums.js.map +1 -1
  25. package/built/src/blockchainClient/errors.d.ts +20 -0
  26. package/built/src/blockchainClient/errors.js +41 -0
  27. package/built/src/blockchainClient/errors.js.map +1 -1
  28. package/built/src/{restclient → blockchainClient}/failoverStrategies.d.ts +14 -0
  29. package/built/src/{restclient → blockchainClient}/failoverStrategies.js +104 -24
  30. package/built/src/blockchainClient/failoverStrategies.js.map +1 -0
  31. package/built/src/blockchainClient/httpUtil.d.ts +4 -0
  32. package/built/src/{restclient → blockchainClient}/httpUtil.js +27 -23
  33. package/built/src/blockchainClient/httpUtil.js.map +1 -0
  34. package/built/src/blockchainClient/interface.d.ts +48 -59
  35. package/built/src/{restclient → blockchainClient}/nodeManager.d.ts +3 -0
  36. package/built/src/{restclient → blockchainClient}/nodeManager.js +7 -0
  37. package/built/src/blockchainClient/nodeManager.js.map +1 -0
  38. package/built/src/blockchainClient/requestWithFailoverStrategy.d.ts +4 -0
  39. package/built/src/blockchainClient/requestWithFailoverStrategy.js +31 -0
  40. package/built/src/blockchainClient/requestWithFailoverStrategy.js.map +1 -0
  41. package/built/src/blockchainClient/types.d.ts +64 -20
  42. package/built/src/blockchainClient/utils.d.ts +47 -12
  43. package/built/src/blockchainClient/utils.js +149 -30
  44. package/built/src/blockchainClient/utils.js.map +1 -1
  45. package/built/src/blockchainClient/validation/merkleHash.js +2 -1
  46. package/built/src/blockchainClient/validation/merkleHash.js.map +1 -1
  47. package/built/src/blockchainClient/validation/rawGtx.d.ts +2 -0
  48. package/built/src/blockchainClient/validation/rawGtx.js +22 -0
  49. package/built/src/blockchainClient/validation/rawGtx.js.map +1 -0
  50. package/built/src/blockchainClient/validation/requests.d.ts +5 -2
  51. package/built/src/blockchainClient/validation/requests.js +26 -0
  52. package/built/src/blockchainClient/validation/requests.js.map +1 -1
  53. package/built/src/blockchainClient/validation/transactionStatusReponse.d.ts +2 -0
  54. package/built/src/blockchainClient/validation/transactionStatusReponse.js +24 -0
  55. package/built/src/blockchainClient/validation/transactionStatusReponse.js.map +1 -0
  56. package/built/src/blockchainClient/validation/txRid.js +1 -1
  57. package/built/src/blockchainClient/validation/txRid.js.map +1 -1
  58. package/built/src/encryption/encryption.d.ts +0 -1
  59. package/built/src/encryption/encryption.js +0 -2
  60. package/built/src/encryption/encryption.js.map +1 -1
  61. package/built/src/formatter.d.ts +5 -7
  62. package/built/src/formatter.js +10 -29
  63. package/built/src/formatter.js.map +1 -1
  64. package/built/src/gtv/index.d.ts +3 -2
  65. package/built/src/gtv/index.js +4 -6
  66. package/built/src/gtv/index.js.map +1 -1
  67. package/built/src/gtx/errors.d.ts +2 -1
  68. package/built/src/gtx/errors.js.map +1 -1
  69. package/built/src/gtx/gtx.d.ts +5 -2
  70. package/built/src/gtx/gtx.js +0 -7
  71. package/built/src/gtx/gtx.js.map +1 -1
  72. package/built/src/gtx/serialization.d.ts +0 -1
  73. package/built/src/gtx/serialization.js +0 -1
  74. package/built/src/gtx/serialization.js.map +1 -1
  75. package/built/src/gtx/types.d.ts +0 -8
  76. package/built/src/logger.d.ts +6 -9
  77. package/built/src/logger.js +8 -14
  78. package/built/src/logger.js.map +1 -1
  79. package/built/src/promiEvent/promiEventEmitter.d.ts +1 -8
  80. package/built/src/promiEvent/promiEventEmitter.js.map +1 -1
  81. package/built/src/utils/calculateTransactionRid.d.ts +1 -1
  82. package/built/src/utils/calculateTransactionRid.js +6 -6
  83. package/built/src/utils/calculateTransactionRid.js.map +1 -1
  84. package/built/src/utils/constants.d.ts +4 -0
  85. package/built/src/utils/constants.js +5 -0
  86. package/built/src/utils/constants.js.map +1 -0
  87. package/built/src/utils/decodeTransactionToGtx.d.ts +1 -1
  88. package/built/src/utils/decodeTransactionToGtx.js +4 -3
  89. package/built/src/utils/decodeTransactionToGtx.js.map +1 -1
  90. package/built/src/utils/encodeTransaction.d.ts +1 -1
  91. package/built/src/utils/encodeTransaction.js +4 -4
  92. package/built/src/utils/encodeTransaction.js.map +1 -1
  93. package/built/test/common/mocks.d.ts +118 -0
  94. package/built/test/common/mocks.js +239 -0
  95. package/built/test/common/mocks.js.map +1 -0
  96. package/built/test/{unit/gtx → common}/serializationtestobjects.d.ts +1 -1
  97. package/built/test/common/serializationtestobjects.js.map +1 -0
  98. package/built/test/common/setups.d.ts +27 -0
  99. package/built/test/common/setups.js +137 -0
  100. package/built/test/common/setups.js.map +1 -0
  101. package/built/test/{unit → common}/signatures.d.ts +0 -1
  102. package/built/test/{unit → common}/signatures.js +0 -1
  103. package/built/test/common/signatures.js.map +1 -0
  104. package/built/test/common/testData.js.map +1 -0
  105. package/built/test/{unit/validation → common}/validationMocks.d.ts +22 -2
  106. package/built/test/{unit/validation → common}/validationMocks.js +13 -1
  107. package/built/test/common/validationMocks.js.map +1 -0
  108. package/built/test/integration/clientGetBlockInfo.test.js +51 -0
  109. package/built/test/integration/clientGetBlockInfo.test.js.map +1 -0
  110. package/built/test/integration/clientGetRejectedTransactions.test.js +28 -0
  111. package/built/test/integration/clientGetRejectedTransactions.test.js.map +1 -0
  112. package/built/test/integration/clientGetTransaction.test.js +29 -0
  113. package/built/test/integration/clientGetTransaction.test.js.map +1 -0
  114. package/built/test/integration/clientGetTransactionStatus.test.js +71 -0
  115. package/built/test/integration/clientGetTransactionStatus.test.js.map +1 -0
  116. package/built/test/integration/clientGetWaitingTransaction.test.js +34 -0
  117. package/built/test/integration/clientGetWaitingTransaction.test.js.map +1 -0
  118. package/built/test/integration/clientGetWaitingTransactions.test.js +28 -0
  119. package/built/test/integration/clientGetWaitingTransactions.test.js.map +1 -0
  120. package/built/test/integration/clientIntegration.test.js +95 -0
  121. package/built/test/integration/clientIntegration.test.js.map +1 -0
  122. package/built/test/integration/clientQuery.test.js +380 -0
  123. package/built/test/integration/clientQuery.test.js.map +1 -0
  124. package/built/test/integration/clientSendTransaction.test.js +86 -0
  125. package/built/test/integration/clientSendTransaction.test.js.map +1 -0
  126. package/built/test/integration/clientSignAndSendUniqueTransaction.test.js +75 -0
  127. package/built/test/integration/clientSignAndSendUniqueTransaction.test.js.map +1 -0
  128. package/built/test/integration/clientSignTransaction.test.js +77 -0
  129. package/built/test/integration/clientSignTransaction.test.js.map +1 -0
  130. package/built/test/integration/{blockchainClientUtils.test.js → clientUtils.test.js} +13 -8
  131. package/built/test/integration/clientUtils.test.js.map +1 -0
  132. package/built/test/integration/createClientIntegration.test.js +158 -0
  133. package/built/test/integration/createClientIntegration.test.js.map +1 -0
  134. package/built/test/integration/encodeTransaction.test.js +3 -6
  135. package/built/test/integration/encodeTransaction.test.js.map +1 -1
  136. package/built/test/integration/getTransactionsInfo.test.js +17 -26
  137. package/built/test/integration/getTransactionsInfo.test.js.map +1 -1
  138. package/built/test/integration/signAndSendUniqueTransaction.test.js +26 -19
  139. package/built/test/integration/signAndSendUniqueTransaction.test.js.map +1 -1
  140. package/built/test/integrationChromiaNetwork/createIccfProofTx.test.js +59 -0
  141. package/built/test/integrationChromiaNetwork/createIccfProofTx.test.js.map +1 -0
  142. package/built/test/{integrationDevnet → integrationChromiaNetwork}/getAnchoringStatusForBlockRid.test.js +9 -15
  143. package/built/test/integrationChromiaNetwork/getAnchoringStatusForBlockRid.test.js.map +1 -0
  144. package/built/test/{integrationDevnet → integrationChromiaNetwork}/getTransactionConfirmationLevel.test.js +7 -13
  145. package/built/test/integrationChromiaNetwork/getTransactionConfirmationLevel.test.js.map +1 -0
  146. package/built/test/integrationChromiaNetwork/getTransactionStatus.test.js +45 -0
  147. package/built/test/integrationChromiaNetwork/getTransactionStatus.test.js.map +1 -0
  148. package/built/test/integrationChromiaNetwork/isBlockAnchored.test.js +35 -0
  149. package/built/test/integrationChromiaNetwork/isBlockAnchored.test.js.map +1 -0
  150. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.d.ts +1 -0
  151. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.js +134 -0
  152. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.js.map +1 -0
  153. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.d.ts +1 -0
  154. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.js +26 -0
  155. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.js.map +1 -0
  156. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.d.ts +1 -0
  157. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js +84 -0
  158. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js.map +1 -0
  159. package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.d.ts +1 -0
  160. package/built/test/{integrationDevnet → integrationChromiaNetwork}/signAndSendUniqueTransaction.test.js +27 -44
  161. package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.js.map +1 -0
  162. package/built/test/manual/iccfManually.test.js +18 -27
  163. package/built/test/manual/iccfManually.test.js.map +1 -1
  164. package/built/test/pcctf/getSuites.test.d.ts +1 -0
  165. package/built/test/pcctf/getSuites.test.js +106 -0
  166. package/built/test/pcctf/getSuites.test.js.map +1 -0
  167. package/built/test/pcctf/helpers.d.ts +92 -0
  168. package/built/test/pcctf/helpers.js +239 -0
  169. package/built/test/pcctf/helpers.js.map +1 -0
  170. package/built/test/unit/ICCF/iccf.test.js +63 -158
  171. package/built/test/unit/ICCF/iccf.test.js.map +1 -1
  172. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.d.ts +1 -2
  173. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.js +101 -296
  174. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.js.map +1 -1
  175. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.d.ts +1 -0
  176. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.js +48 -0
  177. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.js.map +1 -0
  178. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.d.ts +1 -0
  179. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.js +38 -0
  180. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.js.map +1 -0
  181. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.d.ts +1 -0
  182. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.js +30 -0
  183. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.js.map +1 -0
  184. package/built/test/unit/blockchainClient/client.test.d.ts +1 -0
  185. package/built/test/unit/blockchainClient/client.test.js +177 -0
  186. package/built/test/unit/blockchainClient/client.test.js.map +1 -0
  187. package/built/test/unit/blockchainClient/clientCustomStatusCodes.test.js +26 -32
  188. package/built/test/unit/blockchainClient/clientCustomStatusCodes.test.js.map +1 -1
  189. package/built/test/unit/blockchainClient/getAnchoringStatusForBlockRid.test.js +26 -59
  190. package/built/test/unit/blockchainClient/getAnchoringStatusForBlockRid.test.js.map +1 -1
  191. package/built/test/unit/blockchainClient/getSystemAnchoringTransactionConfirmation.test.js +21 -38
  192. package/built/test/unit/blockchainClient/getSystemAnchoringTransactionConfirmation.test.js.map +1 -1
  193. package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js +77 -127
  194. package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js.map +1 -1
  195. package/built/test/unit/blockchainClient/sendTransaction.test.js +352 -675
  196. package/built/test/unit/blockchainClient/sendTransaction.test.js.map +1 -1
  197. package/built/test/unit/blockchainClient/setMerkleVersion.test.js +14 -28
  198. package/built/test/unit/blockchainClient/setMerkleVersion.test.js.map +1 -1
  199. package/built/test/unit/blockchainClient/signAndSendUniqueTransactionPromiEvents.test.js +31 -98
  200. package/built/test/unit/blockchainClient/signAndSendUniqueTransactionPromiEvents.test.js.map +1 -1
  201. package/built/test/unit/blockchainClient/statusPollIntervals.test.js +34 -54
  202. package/built/test/unit/blockchainClient/statusPollIntervals.test.js.map +1 -1
  203. package/built/test/unit/blockchainClient/util.test.js +74 -133
  204. package/built/test/unit/blockchainClient/util.test.js.map +1 -1
  205. package/built/test/unit/decodeTransactionToGtx.test.js +3 -4
  206. package/built/test/unit/decodeTransactionToGtx.test.js.map +1 -1
  207. package/built/test/unit/dump.test.js +2 -3
  208. package/built/test/unit/dump.test.js.map +1 -1
  209. package/built/test/unit/encryption/encryption.test.js +23 -32
  210. package/built/test/unit/encryption/encryption.test.js.map +1 -1
  211. package/built/test/unit/failoverStrategies.test.js +122 -114
  212. package/built/test/unit/failoverStrategies.test.js.map +1 -1
  213. package/built/test/unit/formatter.test.js +38 -42
  214. package/built/test/unit/formatter.test.js.map +1 -1
  215. package/built/test/unit/gtv/gtvHash.test.js +5 -6
  216. package/built/test/unit/gtv/gtvHash.test.js.map +1 -1
  217. package/built/test/unit/gtx/checkGTXSignature.test.js +5 -7
  218. package/built/test/unit/gtx/checkGTXSignature.test.js.map +1 -1
  219. package/built/test/unit/gtx/newSignatureProvider.test.js +9 -10
  220. package/built/test/unit/gtx/newSignatureProvider.test.js.map +1 -1
  221. package/built/test/unit/gtx/serialization.test.js +37 -138
  222. package/built/test/unit/gtx/serialization.test.js.map +1 -1
  223. package/built/test/unit/httpUtil.test.js +27 -18
  224. package/built/test/unit/httpUtil.test.js.map +1 -1
  225. package/built/test/unit/logger.test.js +23 -25
  226. package/built/test/unit/logger.test.js.map +1 -1
  227. package/built/test/unit/nodeMananger.test.js +62 -74
  228. package/built/test/unit/nodeMananger.test.js.map +1 -1
  229. package/built/test/unit/setOrdering.test.js +9 -9
  230. package/built/test/unit/setOrdering.test.js.map +1 -1
  231. package/built/test/unit/stickyNode.test.js +44 -54
  232. package/built/test/unit/stickyNode.test.js.map +1 -1
  233. package/built/test/unit/validation/anchoringTransaction.test.js +7 -8
  234. package/built/test/unit/validation/anchoringTransaction.test.js.map +1 -1
  235. package/built/test/unit/validation/blockIdentifier.test.js +7 -9
  236. package/built/test/unit/validation/blockIdentifier.test.js.map +1 -1
  237. package/built/test/unit/validation/bufferSchema.test.js +4 -5
  238. package/built/test/unit/validation/bufferSchema.test.js.map +1 -1
  239. package/built/test/unit/validation/networkSettings.test.js +11 -13
  240. package/built/test/unit/validation/networkSettings.test.js.map +1 -1
  241. package/built/test/unit/validation/rawGtx.test.d.ts +1 -0
  242. package/built/test/unit/validation/rawGtx.test.js +84 -0
  243. package/built/test/unit/validation/rawGtx.test.js.map +1 -0
  244. package/built/test/unit/validation/requests.test.js +80 -74
  245. package/built/test/unit/validation/requests.test.js.map +1 -1
  246. package/built/test/unit/validation/signMethod.test.js +8 -10
  247. package/built/test/unit/validation/signMethod.test.js.map +1 -1
  248. package/built/test/unit/validation/statusObject.test.d.ts +1 -0
  249. package/built/test/unit/validation/statusObject.test.js +91 -0
  250. package/built/test/unit/validation/statusObject.test.js.map +1 -0
  251. package/built/test/unit/validation/txRid.test.js +7 -9
  252. package/built/test/unit/validation/txRid.test.js.map +1 -1
  253. package/built/umd/index.js +31711 -31107
  254. package/built/umd/index.js.map +1 -1
  255. package/package.json +26 -22
  256. package/built/src/chromia/chromiaClientProvider.d.ts +0 -9
  257. package/built/src/chromia/chromiaClientProvider.js +0 -36
  258. package/built/src/chromia/chromiaClientProvider.js.map +0 -1
  259. package/built/src/chromia/interfaces.d.ts +0 -4
  260. package/built/src/chromia/interfaces.js +0 -2
  261. package/built/src/chromia/interfaces.js.map +0 -1
  262. package/built/src/constants.d.ts +0 -3
  263. package/built/src/constants.js +0 -4
  264. package/built/src/constants.js.map +0 -1
  265. package/built/src/gtx/gtxclient.d.ts +0 -3
  266. package/built/src/gtx/gtxclient.js +0 -96
  267. package/built/src/gtx/gtxclient.js.map +0 -1
  268. package/built/src/gtx/interfaces.d.ts +0 -91
  269. package/built/src/gtx/interfaces.js +0 -2
  270. package/built/src/gtx/interfaces.js.map +0 -1
  271. package/built/src/merkle/binarytree.d.ts +0 -131
  272. package/built/src/merkle/binarytree.js +0 -146
  273. package/built/src/merkle/binarytree.js.map +0 -1
  274. package/built/src/merkle/binarytreefactory.d.ts +0 -86
  275. package/built/src/merkle/binarytreefactory.js +0 -251
  276. package/built/src/merkle/binarytreefactory.js.map +0 -1
  277. package/built/src/merkle/merkleHelper.d.ts +0 -18
  278. package/built/src/merkle/merkleHelper.js +0 -110
  279. package/built/src/merkle/merkleHelper.js.map +0 -1
  280. package/built/src/merkle/merklehashcalculator.d.ts +0 -37
  281. package/built/src/merkle/merklehashcalculator.js +0 -73
  282. package/built/src/merkle/merklehashcalculator.js.map +0 -1
  283. package/built/src/merkle/path.d.ts +0 -151
  284. package/built/src/merkle/path.js +0 -306
  285. package/built/src/merkle/path.js.map +0 -1
  286. package/built/src/merkle/proof/merklehashcarrier.d.ts +0 -17
  287. package/built/src/merkle/proof/merklehashcarrier.js +0 -23
  288. package/built/src/merkle/proof/merklehashcarrier.js.map +0 -1
  289. package/built/src/merkle/proof/merklehashsummaryfactory.d.ts +0 -53
  290. package/built/src/merkle/proof/merklehashsummaryfactory.js +0 -82
  291. package/built/src/merkle/proof/merklehashsummaryfactory.js.map +0 -1
  292. package/built/src/merkle/proof/merkleproof.d.ts +0 -36
  293. package/built/src/merkle/proof/merkleproof.js +0 -61
  294. package/built/src/merkle/proof/merkleproof.js.map +0 -1
  295. package/built/src/merkle/proof/merkleprooftree.d.ts +0 -124
  296. package/built/src/merkle/proof/merkleprooftree.js +0 -117
  297. package/built/src/merkle/proof/merkleprooftree.js.map +0 -1
  298. package/built/src/merkle/proof/merkleprooftreefactory.d.ts +0 -47
  299. package/built/src/merkle/proof/merkleprooftreefactory.js +0 -123
  300. package/built/src/merkle/proof/merkleprooftreefactory.js.map +0 -1
  301. package/built/src/merkle/types.d.ts +0 -11
  302. package/built/src/merkle/types.js +0 -2
  303. package/built/src/merkle/types.js.map +0 -1
  304. package/built/src/restclient/enums.d.ts +0 -4
  305. package/built/src/restclient/enums.js +0 -6
  306. package/built/src/restclient/enums.js.map +0 -1
  307. package/built/src/restclient/errors.d.ts +0 -33
  308. package/built/src/restclient/errors.js +0 -63
  309. package/built/src/restclient/errors.js.map +0 -1
  310. package/built/src/restclient/failoverStrategies.js.map +0 -1
  311. package/built/src/restclient/httpUtil.d.ts +0 -6
  312. package/built/src/restclient/httpUtil.js.map +0 -1
  313. package/built/src/restclient/interfaces.d.ts +0 -68
  314. package/built/src/restclient/interfaces.js +0 -2
  315. package/built/src/restclient/interfaces.js.map +0 -1
  316. package/built/src/restclient/nodeManager.js.map +0 -1
  317. package/built/src/restclient/restclient.d.ts +0 -18
  318. package/built/src/restclient/restclient.js +0 -200
  319. package/built/src/restclient/restclient.js.map +0 -1
  320. package/built/src/restclient/restclientutil.d.ts +0 -32
  321. package/built/src/restclient/restclientutil.js +0 -141
  322. package/built/src/restclient/restclientutil.js.map +0 -1
  323. package/built/src/restclient/types.d.ts +0 -78
  324. package/built/src/restclient/types.js +0 -2
  325. package/built/src/restclient/types.js.map +0 -1
  326. package/built/test/integration/blockchainClientIntegration.test.js +0 -1075
  327. package/built/test/integration/blockchainClientIntegration.test.js.map +0 -1
  328. package/built/test/integration/blockchainClientUtils.test.js.map +0 -1
  329. package/built/test/integration/gtxClientIntegration.test.js +0 -334
  330. package/built/test/integration/gtxClientIntegration.test.js.map +0 -1
  331. package/built/test/integration/merkleIntegration.test.js +0 -138
  332. package/built/test/integration/merkleIntegration.test.js.map +0 -1
  333. package/built/test/integration/objectGenerator.d.ts +0 -3
  334. package/built/test/integration/objectGenerator.js +0 -17
  335. package/built/test/integration/objectGenerator.js.map +0 -1
  336. package/built/test/integration/restClientIntegration.test.js +0 -170
  337. package/built/test/integration/restClientIntegration.test.js.map +0 -1
  338. package/built/test/integration/testData.js.map +0 -1
  339. package/built/test/integrationDevnet/constants.d.ts +0 -1
  340. package/built/test/integrationDevnet/constants.js +0 -2
  341. package/built/test/integrationDevnet/constants.js.map +0 -1
  342. package/built/test/integrationDevnet/getAnchoringStatusForBlockRid.test.js.map +0 -1
  343. package/built/test/integrationDevnet/getTransactionConfirmationLevel.test.js.map +0 -1
  344. package/built/test/integrationDevnet/getTransactionStatus.test.js +0 -53
  345. package/built/test/integrationDevnet/getTransactionStatus.test.js.map +0 -1
  346. package/built/test/integrationDevnet/signAndSendUniqueTransaction.test.js.map +0 -1
  347. package/built/test/manual/chromiaClientProviderManually.test.js +0 -28
  348. package/built/test/manual/chromiaClientProviderManually.test.js.map +0 -1
  349. package/built/test/manual/restClientManually.test.js +0 -52
  350. package/built/test/manual/restClientManually.test.js.map +0 -1
  351. package/built/test/unit/ICCF/util.d.ts +0 -6
  352. package/built/test/unit/ICCF/util.js +0 -21
  353. package/built/test/unit/ICCF/util.js.map +0 -1
  354. package/built/test/unit/blockchainClient/blockchainClient.test.js +0 -287
  355. package/built/test/unit/blockchainClient/blockchainClient.test.js.map +0 -1
  356. package/built/test/unit/blockchainClient/helpers/sendTransaction.d.ts +0 -25
  357. package/built/test/unit/blockchainClient/helpers/sendTransaction.js +0 -56
  358. package/built/test/unit/blockchainClient/helpers/sendTransaction.js.map +0 -1
  359. package/built/test/unit/chromiaClientProvider.test.js +0 -70
  360. package/built/test/unit/chromiaClientProvider.test.js.map +0 -1
  361. package/built/test/unit/common/mocks.d.ts +0 -34
  362. package/built/test/unit/common/mocks.js +0 -69
  363. package/built/test/unit/common/mocks.js.map +0 -1
  364. package/built/test/unit/gtx/gtxClient.test.js +0 -97
  365. package/built/test/unit/gtx/gtxClient.test.js.map +0 -1
  366. package/built/test/unit/gtx/serializationtestobjects.js.map +0 -1
  367. package/built/test/unit/merkle/merkleHelper/merkleHelperTest.js +0 -87
  368. package/built/test/unit/merkle/merkleHelper/merkleHelperTest.js.map +0 -1
  369. package/built/test/unit/requestWithFailoverStrategy.test.js +0 -146
  370. package/built/test/unit/requestWithFailoverStrategy.test.js.map +0 -1
  371. package/built/test/unit/restClient.test.js +0 -389
  372. package/built/test/unit/restClient.test.js.map +0 -1
  373. package/built/test/unit/restClientUtil.test.js +0 -226
  374. package/built/test/unit/restClientUtil.test.js.map +0 -1
  375. package/built/test/unit/signatures.js.map +0 -1
  376. package/built/test/unit/validation/validationMocks.js.map +0 -1
  377. package/changelog.md +0 -586
  378. /package/built/test/{unit/gtx → common}/serializationtestobjects.js +0 -0
  379. /package/built/test/{integration → common}/testData.d.ts +0 -0
  380. /package/built/test/{integration → common}/testData.js +0 -0
  381. /package/built/test/integration/{blockchainClientIntegration.test.d.ts → clientGetBlockInfo.test.d.ts} +0 -0
  382. /package/built/test/integration/{blockchainClientUtils.test.d.ts → clientGetRejectedTransactions.test.d.ts} +0 -0
  383. /package/built/test/integration/{gtxClientIntegration.test.d.ts → clientGetTransaction.test.d.ts} +0 -0
  384. /package/built/test/integration/{merkleIntegration.test.d.ts → clientGetTransactionStatus.test.d.ts} +0 -0
  385. /package/built/test/integration/{restClientIntegration.test.d.ts → clientGetWaitingTransaction.test.d.ts} +0 -0
  386. /package/built/test/{integrationDevnet/getAnchoringStatusForBlockRid.test.d.ts → integration/clientGetWaitingTransactions.test.d.ts} +0 -0
  387. /package/built/test/{integrationDevnet/getTransactionConfirmationLevel.test.d.ts → integration/clientIntegration.test.d.ts} +0 -0
  388. /package/built/test/{integrationDevnet/getTransactionStatus.test.d.ts → integration/clientQuery.test.d.ts} +0 -0
  389. /package/built/test/{integrationDevnet/signAndSendUniqueTransaction.test.d.ts → integration/clientSendTransaction.test.d.ts} +0 -0
  390. /package/built/test/{manual/chromiaClientProviderManually.test.d.ts → integration/clientSignAndSendUniqueTransaction.test.d.ts} +0 -0
  391. /package/built/test/{manual/restClientManually.test.d.ts → integration/clientSignTransaction.test.d.ts} +0 -0
  392. /package/built/test/{unit/blockchainClient/blockchainClient.test.d.ts → integration/clientUtils.test.d.ts} +0 -0
  393. /package/built/test/{unit/chromiaClientProvider.test.d.ts → integration/createClientIntegration.test.d.ts} +0 -0
  394. /package/built/test/{unit/gtx/gtxClient.test.d.ts → integrationChromiaNetwork/createIccfProofTx.test.d.ts} +0 -0
  395. /package/built/test/{unit/merkle/merkleHelper/merkleHelperTest.d.ts → integrationChromiaNetwork/getAnchoringStatusForBlockRid.test.d.ts} +0 -0
  396. /package/built/test/{unit/requestWithFailoverStrategy.test.d.ts → integrationChromiaNetwork/getTransactionConfirmationLevel.test.d.ts} +0 -0
  397. /package/built/test/{unit/restClient.test.d.ts → integrationChromiaNetwork/getTransactionStatus.test.d.ts} +0 -0
  398. /package/built/test/{unit/restClientUtil.test.d.ts → integrationChromiaNetwork/isBlockAnchored.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/gtv/definition.js","../src/customError/index.js","../src/gtx/errors.js","../src/formatter.js","../src/gtx/serialization.js","../src/merkle/path.js","../src/merkle/binarytree.js","../src/encryption/errors.js","../src/encryption/encryption.js","../src/merkle/merklehashcalculator.js","../src/merkle/binarytreefactory.js","../src/merkle/proof/merkleprooftree.js","../src/merkle/proof/merkleprooftreefactory.js","../src/merkle/proof/merklehashcarrier.js","../src/merkle/proof/merklehashsummaryfactory.js","../src/merkle/proof/merkleproof.js","../src/gtv/index.js","../src/gtx/index.js","../src/gtx/gtx.js","../src/logger.js","../src/gtx/gtxclient.js","../src/restclient/errors.js","../src/restclient/enums.js","../src/restclient/httpUtil.js","../src/restclient/failoverStrategies.js","../src/blockchainClient/errors.js","../src/blockchainClient/validation/bufferSchema.js","../src/blockchainClient/validation/txRid.js","../src/blockchainClient/validation/anchoringTransaction.js","../src/ICCF/error.js","../src/ICCF/utils.js","../src/blockchainClient/enums.js","../src/ICCF/IccfProofTxMaterialBuilder.js","../src/promiEvent/promiEventEmitter.js","../src/promiEvent/promiEvents.js","../src/blockchainClient/validation/blockIdentifier.js","../src/blockchainClient/validation/networkSettings.js","../src/blockchainClient/validation/signMethod.js","../src/blockchainClient/validation/requests.js","../src/blockchainClient/blockchainClient.js","../src/restclient/nodeManager.js","../src/blockchainClient/validation/merkleHash.js","../src/blockchainClient/utils.js","../src/restclient/restclientutil.js","../src/restclient/restclient.js","../src/merkle/merkleHelper.js","../src/chromia/chromiaClientProvider.js","../src/blockchainClient/clientStub.js","../src/utils/calculateTransactionRid.js","../src/utils/encodeTransaction.js","../src/utils/decodeTransactionToGtx.js","../src/utils/dump.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst asn = require(\"@chromia/asn1/lib/asn1\");\nexport const ASNDictPair = asn.define(\"DictPair\", function () {\n this.seq().obj(this.key(\"name\").utf8str(), this.key(\"value\").use(rawGTV));\n});\nexport const rawGTV = asn.define(\"GtvValue\", function () {\n this.choice({\n null: this.explicit(0).null_(),\n byteArray: this.explicit(1).octstr(),\n string: this.explicit(2).utf8str(),\n integer: this.explicit(3).int(),\n dict: this.explicit(4).seqof(ASNDictPair),\n array: this.explicit(5).seqof(rawGTV),\n bigInteger: this.explicit(6).int(),\n });\n});\nexport const ASNBuffer = asn.define(\"Buffer\", function () {\n this.octstr();\n});\n//# sourceMappingURL=definition.js.map","export class CustomError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomError } from \"../customError\";\nexport class UnexpectedArgumentTypeError extends CustomError {\n constructor(typedArg) {\n super(`Cannot parse typedArg ${JSON.stringify(typedArg)}. Unknown type ${typedArg.type}`, 400);\n }\n}\nexport class MissingGtxException extends CustomError {\n constructor() {\n super(`Missing instance of gtx protocol (used for communicating with postchain) to add operation to`, 400);\n }\n}\nexport class AlreadySignedTransactionException extends CustomError {\n constructor(operation) {\n super(`Cannot add ${operation} calls to an already signed gtx`, 400);\n }\n}\nexport class NumberOfSignersAndSignaturesException extends CustomError {\n constructor() {\n super(`Not matching number of signers and signatures`, 400);\n }\n}\nexport class MissingSignerException extends CustomError {\n constructor() {\n super(`No such signer, remember to add signer to transaction before adding a signature`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from \"buffer\";\nexport function pgBytes(buffer) {\n if (!Buffer.isBuffer(buffer)) {\n throw new PgBytesInputException(buffer);\n }\n return `\\\\x${buffer.toString(\"hex\")}`;\n}\n/**\n * Converts hex string to Buffer\n * @param key: string\n * @returns {Buffer}\n */\nexport function toBuffer(key) {\n return Buffer.from(key, \"hex\");\n}\n/**\n * Converts Buffer to hex string\n * @param buffer: Buffer\n * @returns {string}\n */\nexport function toString(buffer) {\n return buffer.toString(\"hex\").toUpperCase();\n}\nexport function toQueryObjectGTV(nameOrObject, queryArguments) {\n let name;\n if (typeof nameOrObject === \"string\") {\n name = nameOrObject;\n return [name, Object.assign({}, queryArguments)];\n }\n else {\n const objectCopy = Object.assign({}, nameOrObject);\n const { type } = objectCopy, restProps = __rest(objectCopy, [\"type\"]);\n return [type, restProps];\n }\n}\nexport class PgBytesInputException extends Error {\n constructor(buffer) {\n super(`util.pgBytes expects a buffer, but got ${typeof buffer}`);\n }\n}\nexport function ensureBuffer(value) {\n if (value instanceof Buffer) {\n return value;\n }\n else {\n return toBuffer(value);\n }\n}\nexport function ensureString(value) {\n if (typeof value === \"string\") {\n return value.toUpperCase();\n }\n else {\n return toString(value);\n }\n}\nexport function checkGtvType(value) {\n try {\n if (value == null) {\n return true;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (typeof value === \"string\") {\n return true;\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return true;\n }\n if (typeof value === \"bigint\") {\n return true;\n }\n if (value.constructor === Array) {\n value.map(item => checkGtvType(item));\n return true;\n }\n if (typeof value === \"object\") {\n Object.keys(value).map(function (key) {\n checkGtvType(value[key]);\n });\n return true;\n }\n }\n catch (error) {\n throw new Error(`Failed to check type: ${error}`);\n }\n return false;\n}\nexport function rawGtxToGtx(rawGtx) {\n const rawGtxBody = rawGtx[0];\n const signatures = rawGtx[1];\n const gtxBody = {\n blockchainRid: rawGtxBody[0],\n operations: rawGtxBody[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: rawGtxBody[2],\n };\n return {\n blockchainRid: gtxBody.blockchainRid,\n operations: gtxBody.operations,\n signers: gtxBody.signers,\n signatures,\n };\n}\nexport function rawGtxToRawGtxBody(rawGtx) {\n return rawGtx[0];\n}\nexport function checkGtxType(value) {\n try {\n rawGtxToGtx(value);\n return true;\n }\n catch (error) {\n return false;\n }\n}\nexport function removeDuplicateSigners(signers) {\n const signersAsString = [];\n signers.forEach(item => {\n const itemAsString = item.toString(\"hex\");\n if (!signersAsString.includes(itemAsString)) {\n signersAsString.push(itemAsString);\n }\n });\n const result = [];\n signersAsString.forEach(item => {\n result.push(Buffer.from(item, \"hex\"));\n });\n return result;\n}\nexport function matchRellErrorString(rellError) {\n const parsed = rellError.match(/\\[([^\\]]+)\\]\\sOperation\\s'([^']+)'\\sfailed:\\s(.+)$/);\n if (!parsed)\n return {};\n const [rellLine, operation, shortReason] = parsed.slice(1);\n return { shortReason, rellLine, operation };\n}\n//# sourceMappingURL=formatter.js.map","import { Buffer } from \"buffer\";\nimport { rawGTV } from \"../gtv/definition\";\nimport { BN } from \"bn.js\";\nimport { UnexpectedArgumentTypeError } from \"./errors\";\nimport { checkGtxType } from \"../formatter\";\nexport function encodeValue(rawGtv) {\n return rawGTV.encode(createTypedArg(rawGtv));\n}\nexport function encodeValueGtx(rawGtx) {\n return encodeValue(rawGtx);\n}\nexport function decodeValue(bytes) {\n try {\n const obj = rawGTV.decode(bytes);\n return parseValue(obj);\n }\n catch (error) {\n throw new Error(`Invalid GTV data. ${error}`);\n }\n}\nexport function decodeValueGtx(bytes) {\n const decodedValue = decodeValue(bytes);\n if (!checkGtxType(decodedValue)) {\n throw new Error(`Unexpected type of value: ${decodedValue}, expected decoded value to be of type RawGtx`);\n }\n return decodedValue;\n}\nexport function parseValue(typedArg) {\n var _a, _b;\n if (typedArg.type === \"null\") {\n return null;\n }\n else if (typedArg.type === \"byteArray\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"string\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"integer\") {\n return Number(typedArg.value);\n }\n else if (typedArg.type === \"array\") {\n const arrayValue = typedArg.value;\n return arrayValue.map((item) => parseValue(item));\n }\n else if (typedArg.type === \"bigInteger\") {\n return BigInt((_b = (_a = typedArg.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\");\n }\n else if (typedArg.type === \"dict\") {\n const arrayValue = typedArg.value;\n const result = {};\n arrayValue.forEach((pair) => {\n result[pair.name] = parseValue(pair.value);\n });\n return result;\n }\n else {\n throw new UnexpectedArgumentTypeError(typedArg);\n }\n}\nexport function createTypedArg(value) {\n try {\n if (value == null) {\n return { type: \"null\", value: null };\n }\n if (Buffer.isBuffer(value)) {\n return { type: \"byteArray\", value: value };\n }\n if (typeof value === \"boolean\") {\n return { type: \"integer\", value: value ? 1 : 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", value: value };\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return { type: \"integer\", value: new BN(value) };\n }\n if (typeof value === \"bigint\") {\n return { type: \"bigInteger\", value: new BN(value.toString()) };\n }\n if (value.constructor === Array) {\n return {\n type: \"array\",\n value: value.map(item => createTypedArg(item)),\n };\n }\n if (typeof value === \"object\") {\n let valueAsDictPair = value;\n if (isDictPairWithStringKey(valueAsDictPair)) {\n valueAsDictPair = sortDictPairByKey(valueAsDictPair);\n }\n return {\n type: \"dict\",\n value: Object.keys(valueAsDictPair).map(function (key) {\n return { name: key, value: createTypedArg(valueAsDictPair[key]) };\n }),\n };\n }\n }\n catch (error) {\n const message = value ? value.toString() : \"RawGtv\";\n throw new Error(`Failed to encode ${message}: ${error}`);\n }\n throw new Error(`value ${value} have unsupported type: ${typeof value}`);\n}\nfunction isDictPairWithStringKey(obj) {\n for (const key in obj) {\n if (typeof key !== \"string\") {\n return false;\n }\n }\n return true;\n}\nfunction sortDictPairByKey(dict) {\n const sortedArray = Object.entries(dict).sort(([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n });\n const sortedDict = {};\n for (const [key, value] of sortedArray) {\n sortedDict[key] = value;\n }\n return sortedDict;\n}\n//# sourceMappingURL=serialization.js.map","\"use strict\";\nvar util = require('../formatter');\nfunction PathElement(previous) {\n this.previous = previous;\n}\nPathElement.prototype.getSearchKey = function () { };\nfunction PathLeafElement(previous) {\n PathElement.call(this, previous);\n}\nPathLeafElement.prototype = Object.create(PathElement.prototype);\nPathLeafElement.prototype.constructor = PathLeafElement;\nPathLeafElement.prototype.equals = function (other) {\n if (this === other)\n return true;\n if (typeof this !== typeof other)\n return false;\n return true;\n};\nfunction SearchablePathElement(previous) {\n PathElement.call(this, previous);\n}\nSearchablePathElement.prototype = Object.create(PathElement.prototype);\nSearchablePathElement.prototype.constructor = SearchablePathElement;\nSearchablePathElement.prototype.getSearchKey = function () { };\n/**\n *\n * @param {SearchablePathElement} previous\n * @param {number} index\n */\nfunction ArrayPathElement(previous, index) {\n SearchablePathElement.call(this, previous);\n this.index = index;\n}\nArrayPathElement.prototype = Object.create(SearchablePathElement.prototype);\nArrayPathElement.prototype.constructor = ArrayPathElement;\nArrayPathElement.prototype.getSearchKey = function () {\n return this.index;\n};\n/**\n * @param {ArrayPathElement} other\n */\nArrayPathElement.prototype.equals = function (other) {\n if (this === other)\n return true;\n if (typeof this !== typeof other)\n return false;\n if (this.index != other.index)\n return false;\n return true;\n};\n/**\n *\n * @param {SearchablePathElement} previous\n * @param {string} key\n */\nfunction DictPathElement(previous, key) {\n SearchablePathElement.call(this, previous);\n this.key = key;\n}\nDictPathElement.prototype = Object.create(SearchablePathElement.prototype);\nDictPathElement.prototype.constructor = DictPathElement;\nDictPathElement.prototype.getSearchKey = function () {\n return this.key;\n};\n/**\n * @param {DictPathElement} other\n */\nDictPathElement.prototype.equals = function (other) {\n if (this === other)\n return true;\n if (typeof this !== typeof other)\n return false;\n if (this.key != other.key)\n return false;\n return true;\n};\n/**\n *\n * @param {Array} pathElements\n */\nfunction Path(pathElements) {\n this.pathElements = pathElements;\n}\n/**\n *\n */\nPath.prototype.getCurrentPathElement = function () {\n return this.pathElements[0];\n};\n/**\n *\n */\nPath.prototype.size = function () {\n return this.pathElements.length;\n};\n/**\n *\n */\nPath.prototype.tail = function () {\n if (this.pathElements.length == 0) {\n throw new Error(\"Impossible to tail this array\");\n }\n else {\n var tail = this.pathElements.slice(1);\n return new Path(tail);\n }\n};\nPath.prototype.debugString = function () {\n var sb = \"\";\n this.pathElements.forEach(elem => {\n if (elem instanceof SearchablePathElement) {\n sb = sb + \"-> \" + elem.getSearchKey();\n }\n else if (elem instanceof PathLeafElement) {\n sb = sb + \"-> Leaf\";\n }\n });\n return sb;\n};\n/**\n * @param {Path} other\n */\nPath.prototype.equals = function (other) {\n if (this === other)\n return true;\n if (typeof this != typeof other)\n return false;\n return this.pathElements == other.pathElements;\n};\n/**\n * @param {number} index\n * @param {Path} path\n */\nvar getTailIfFirstElementIsArrayOfThisIndex = function (index, path) {\n return getTail(index, path);\n};\n/**\n *\n * @param {string} key\n * @param {Path} path\n */\nvar getTailIfFirstElementIsDictOfThisKey = function (key, path) {\n return getTail(key, path);\n};\n/**\n *\n * @param {string|number} searchKey\n * @param {Path} path\n */\nvar getTail = function (searchKey, path) {\n if (searchKey === null) {\n throw new Error(\"Have to provide a search key\");\n }\n try {\n var firstElement = path.pathElements[0];\n if (firstElement instanceof SearchablePathElement) {\n if (firstElement.getSearchKey() == searchKey) {\n return path.tail();\n }\n }\n }\n catch (err) {\n util.logError(\"Why are we dropping first element of an empty path? \" + err);\n return null;\n }\n return null;\n};\n/**\n *\n * @param {Array} paths\n */\nfunction PathSet(paths) {\n this.paths = paths;\n}\n/**\n *\n */\nPathSet.prototype.isEmpty = function () {\n return this.paths.length == 0;\n};\n/**\n *\n */\nPathSet.prototype.getPathLeafOrElseAnyCurrentPathElement = function () {\n var leafElem = null;\n var currElem = null;\n var prev = {\n \"path\": null,\n \"elem\": null,\n };\n this.paths.forEach(path => {\n currElem = path.getCurrentPathElement();\n if (currElem instanceof PathLeafElement) {\n leafElem = currElem;\n }\n prev = this.errorCheckUnequalParent(path, currElem, prev.path, prev.elem);\n });\n if (leafElem != null) {\n return leafElem;\n }\n else {\n return currElem; // It doesn't matter which one we return (Next step we will get the \"previous\" from this one)\n }\n};\n/**\n * Yeah, this might be a completely un-needed check (but it MIGHT save us later on if we forget this rule).\n * What we are looking for here is an impossible state where two paths in the same set don't have the same parent.\n * (Since we usually only have one path in a path set, this check should be cheap)\n *\n * @param {Path} currPath\n * @param {PathElement} currElem\n * @param {Path} prevPath\n * @param {PathElement} prevElem\n */\nPathSet.prototype.errorCheckUnequalParent = function (currPath, currElem, prevPath, prevElem) {\n if (prevElem != null) {\n // weird: javascript cannot compare null == null then we have to compare each with null separately :(\n if (currElem.previous == null && prevElem.previous == null) {\n return {\n \"path\": currPath,\n \"elem\": currElem\n };\n }\n else if ((currElem.previous == null && prevElem.previous != null) || (currElem.previous != null && prevElem.previous == null)) {\n throw new Error(\"Something is wrong, these paths do not have the same parent. (\" + currPath + \") (\" + prevPath + \")\");\n }\n else if (!currElem.previous.equals(prevElem.previous)) {\n throw new Error(\"Something is wrong, these paths do not have the same parent. (\" + currPath + \") (\" + prevPath + \")\");\n }\n }\n return {\n \"path\": currPath,\n \"elem\": currElem\n };\n};\n/**\n *\n */\nPathSet.prototype.keepOnlyArrayPaths = function () {\n var filteredPaths = this.paths.filter(path => {\n return path.pathElements[0] instanceof ArrayPathElement;\n });\n return new PathSet(filteredPaths);\n};\n/**\n *\n */\nPathSet.prototype.keepOnlyDictPaths = function () {\n var filteredPaths = this.paths.filter(path => {\n return path.pathElements[0] instanceof DictPathElement;\n });\n return new PathSet(filteredPaths);\n};\n/**\n *\n */\nPathSet.prototype.getTailIfFirstElementIsArrayOfThisIndexFromList = function (index) {\n return this.getTailFromList(index, getTailIfFirstElementIsArrayOfThisIndex);\n};\n/**\n *\n */\nPathSet.prototype.getTailIfFirstElementIsDictOfThisKeyFromList = function (key) {\n return this.getTailFromList(key, getTailIfFirstElementIsDictOfThisKey);\n};\n/**\n *\n */\nPathSet.prototype.getTailFromList = function (searchKey, filterFunc) {\n var retPaths = new Array();\n this.paths.forEach(path => {\n var newPath = filterFunc(searchKey, path);\n if (newPath != null) {\n retPaths.push(newPath);\n }\n });\n return new PathSet(retPaths);\n};\n/**\n *\n * @param {Array} arr\n */\nvar buildPathFromArray = function (arr) {\n var pathElements = new Array();\n var lastPathElem = null;\n arr.forEach(item => {\n var newElem = null;\n if (typeof item === 'number') {\n newElem = new ArrayPathElement(lastPathElem, item);\n }\n else if (typeof item === 'string') {\n newElem = new DictPathElement(lastPathElem, item);\n }\n else {\n throw new Error(\"A path structure must only consist of Ints and Strings, not \" + item);\n }\n pathElements.push(newElem);\n lastPathElem = newElem;\n });\n var lastOne = lastPathElem;\n pathElements.push(new PathLeafElement(lastOne));\n return new Path(pathElements);\n};\nmodule.exports = { Path, PathElement, PathLeafElement, ArrayPathElement, SearchablePathElement, DictPathElement, PathSet,\n getTailIfFirstElementIsArrayOfThisIndex, buildPathFromArray };\n//# sourceMappingURL=path.js.map","\"use strict\";\nvar PathLeafElement = require('./path').PathLeafElement;\nconst HASH_PREFIX_NODE = 0;\nconst HASH_PREFIX_LEAF = 1;\nconst HASH_PREFIX_NODE_ARRAY = 7;\nconst HASH_PREFIX_NODE_DICT = 8;\n/**\n *\n */\nfunction BinaryTreeElement() {\n this.pathElem = null;\n}\nBinaryTreeElement.prototype.isPath = function () {\n return this.pathElem != null;\n};\nBinaryTreeElement.prototype.isPathLeaf = function () {\n if (this.pathElem == null) {\n return false;\n }\n if (this.pathElem instanceof PathLeafElement) {\n return true;\n }\n else {\n return false;\n }\n};\nBinaryTreeElement.prototype.setPathElement = function (pathElem) {\n this.pathElem = pathElem;\n};\nBinaryTreeElement.prototype.getPrefixByte = function () {\n return HASH_PREFIX_NODE;\n};\n/**\n *\n * @param {BinaryTreeElement} left\n * @param {BinaryTreeElement} right\n */\nfunction Node(left, right) {\n this.left = left;\n this.right = right;\n}\nNode.prototype = Object.create(BinaryTreeElement.prototype);\nNode.prototype.constructor = Node;\nNode.prototype.getPrefixByte = function () {\n return HASH_PREFIX_NODE;\n};\n/**\n *\n * @param {BinaryTreeElement} left\n * @param {BinaryTreeElement} right\n * @param {*} content\n * @param {PathSet} pathElem\n */\nfunction SubTreeRootNode(left, right, content, pathElem) {\n Node.call(this, left, right);\n this.content = content;\n BinaryTreeElement.prototype.setPathElement.call(this, pathElem);\n}\nSubTreeRootNode.prototype = Object.create(Node.prototype);\nSubTreeRootNode.prototype.constructor = SubTreeRootNode;\n/**\n *\n * @param {*} content\n * @param {PathElement} pathElem\n */\nfunction Leaf(content, pathElem = null) {\n this.content = content;\n if (pathElem != null) {\n if (pathElem instanceof PathLeafElement) {\n BinaryTreeElement.prototype.setPathElement.call(this, pathElem);\n }\n else {\n throw new Error(\"The path and object structure does not match! We are at a leaf, but the path expects a sub structure.\");\n }\n }\n}\nLeaf.prototype = Object.create(BinaryTreeElement.prototype);\nLeaf.prototype.constructor = Leaf;\nLeaf.prototype.getPrefixByte = function () {\n return HASH_PREFIX_LEAF;\n};\nfunction EmptyLeaf() { }\nEmptyLeaf.prototype = Object.create(BinaryTreeElement.prototype);\nEmptyLeaf.prototype.constructor = EmptyLeaf;\n/**\n * Wrapper class for the root object.\n * @param {BinaryTreeElement} root\n */\nfunction BinaryTree(root) {\n this.root = root;\n}\nBinaryTree.prototype.maxLevel = function () {\n return this.maxLevelInternal(this.root);\n};\nBinaryTree.prototype.maxLevelInternal = function (node) {\n if (node instanceof EmptyLeaf) {\n return 0;\n }\n else if (node instanceof Leaf) {\n return 1;\n }\n else if (node instanceof Node) {\n return Math.max(this.maxLevelInternal(node.left), this.maxLevelInternal(node.right)) + 1;\n }\n else {\n throw new Error(\"What is this type? \" + typeof node);\n }\n};\n/**\n * Represents the top of a sub tree generated by a [Array]\n *\n * @param {*} left\n * @param {*} right\n * @param {*} content\n * @param {*} size\n * @param {PathElement} pathElem\n */\nfunction ArrayHeadNode(left, right, content, size, pathElem = null) {\n SubTreeRootNode.call(this, left, right, content, pathElem);\n this.size = size;\n}\nArrayHeadNode.prototype = Object.create(SubTreeRootNode.prototype);\nArrayHeadNode.prototype.constructor = ArrayHeadNode;\nArrayHeadNode.prototype.getPrefixByte = function () {\n return HASH_PREFIX_NODE_ARRAY;\n};\n/**\n * Represents the top a sub tree generated by a [Dictionary]\n * @param {*} left\n * @param {*} right\n * @param {*} content\n * @param {*} size\n * @param {PathElement} pathElem\n */\nfunction DictHeadNode(left, right, content, size, pathElem = null) {\n SubTreeRootNode.call(this, left, right, content, pathElem);\n this.size = size;\n}\nDictHeadNode.prototype = Object.create(SubTreeRootNode.prototype);\nDictHeadNode.prototype.constructor = DictHeadNode;\nDictHeadNode.prototype.getPrefixByte = function () {\n return HASH_PREFIX_NODE_DICT;\n};\nmodule.exports = { HASH_PREFIX_NODE, HASH_PREFIX_LEAF, HASH_PREFIX_NODE_ARRAY, HASH_PREFIX_NODE_DICT,\n Node, Leaf, EmptyLeaf, SubTreeRootNode, BinaryTreeElement, BinaryTree, ArrayHeadNode, DictHeadNode };\n//# sourceMappingURL=binarytree.js.map","export class PrivKeyFormatException extends Error {\n constructor(privKey) {\n super(`Invalid key length. Expected 32, but got ${privKey.length}`);\n }\n}\nexport class MissingPrivKeyArgumentException extends Error {\n constructor() {\n super(`Missing argument privKey`);\n }\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nimport * as crypto from \"crypto\";\nimport * as secp256k1 from \"secp256k1\";\nimport { Buffer } from \"buffer\";\nimport { ensureBuffer } from \"../formatter\";\nimport { MissingPrivKeyArgumentException, PrivKeyFormatException } from \"./errors\";\nexport function createPublicKey(privKey) {\n validatePrivKeyFormat(privKey);\n return Buffer.from(secp256k1.publicKeyCreate(privKey, true).buffer);\n}\nexport function randomBytes(size) {\n return crypto.randomBytes(size);\n}\nexport function sha256(buffer) {\n return crypto.createHash(\"sha256\").update(buffer).digest();\n}\nexport const hash256 = sha256;\nexport function hashConcat(items) {\n return hash256(Buffer.concat(items));\n}\n/**\n * @param content the content that the signature signs. It will be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkSignature(content, pubKey, signature) {\n const digest = hash256(content);\n return checkDigestSignature(digest, pubKey, signature);\n}\n/**\n * @param digest the signed digest. It will not be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkDigestSignature(digest, pubKey, signature) {\n return secp256k1.ecdsaVerify(signature, digest, pubKey);\n}\n/**\n * @param content to sign. It will be digested before signing.\n * @param privKey The private key to sign the content with\n *\n * @return the signature\n */\nexport function sign(content, privKey) {\n validatePrivKeyFormat(privKey);\n const digestBuffer = sha256(content);\n return signDigest(digestBuffer, privKey);\n}\n/**\n * @param digestBuffer to sign. It will not be digested before signing.\n * @param privKey The private key to sign the digest with\n *\n * @return the signature\n */\nexport function signDigest(digestBuffer, privKey) {\n return Buffer.from(secp256k1.ecdsaSign(digestBuffer, privKey).signature);\n}\n/**\n * Creates a key pair (which usually represents one user)\n * @param privKey to create key pair based on\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function makeKeyPair(privKey) {\n let pubKey;\n if (privKey) {\n privKey = ensureBuffer(privKey);\n pubKey = createPublicKey(privKey);\n }\n else {\n do {\n privKey = randomBytes(32);\n } while (!secp256k1.privateKeyVerify(privKey));\n pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n }\n return { pubKey, privKey };\n}\n/**\n * Generates a 16bytes TUID (Text unique ID) (a 32characters long string)\n * @returns string\n */\nexport function makeTuid() {\n return randomBytes(16).toString(\"hex\");\n}\n/**\n * Verify that keypair is correct. Providing the private key, this function returns its associated public key\n * @param privKey: Buffer\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function verifyKeyPair(privKey) {\n validatePrivKeyFormat(privKey);\n const pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n return { pubKey, privKey };\n}\nfunction validatePrivKeyFormat(privKey) {\n if (!privKey) {\n throw new MissingPrivKeyArgumentException();\n }\n if (!Buffer.isBuffer(privKey) || privKey.length !== 32) {\n throw new PrivKeyFormatException(privKey);\n }\n}\n//# sourceMappingURL=encryption.js.map","\"use strict\";\nconst { Buffer } = require('buffer');\nvar serialization = require('../gtx/serialization');\nvar HASH_PREFIX_LEAF = require('./binarytree').HASH_PREFIX_LEAF;\nvar encryption = require('../../src/encryption/encryption');\nfunction CryptoSystem() { }\nCryptoSystem.prototype.digest = function (buffer) {\n return encryption.hash256(buffer);\n};\n/**\n *\n * @param {Buffer} buffer\n * @param {CryptoSystem} cryptoSystem\n */\nfunction hashingFun(buffer, cryptoSystem) {\n if (cryptoSystem === null) {\n throw new Error(\"In this case we need the CryptoSystem to calculate the hash\");\n }\n else {\n return cryptoSystem.digest(buffer);\n }\n}\n/**\n *\n * @param {CryptoSystem} cryptoSystem\n */\nfunction MerkleHashCalculator(cryptoSystem) {\n this.cryptoSystem = cryptoSystem;\n}\n/**\n * @param {number} prefix\n * @param {Buffer} hashLeft\n * @param {Buffer} hashRight\n */\nMerkleHashCalculator.prototype.calculateNodeHash = function (prefix, hashLeft, hashRight) {\n return this.calculateNodeHashInternal(prefix, hashLeft, hashRight, hashingFun);\n};\n/**\n * @param {*} value\n */\nMerkleHashCalculator.prototype.calculateLeafHash = function (value, merkleHashVersion) {\n return this.calculateHashOfValueInternal(value, serialization.encodeValue, hashingFun, merkleHashVersion);\n};\n/**\n * @param {number} prefix\n * @param {Buffer} hashLeft\n * @param {Buffer} hashRight\n */\nMerkleHashCalculator.prototype.calculateNodeHashInternal = function (prefix, hashLeft, hashRight, hashFunc) {\n var buf = Buffer.alloc(1);\n buf.writeInt8(prefix);\n var bufferSum = Buffer.concat([buf, hashLeft, hashRight]);\n return hashFunc(bufferSum, this.cryptoSystem);\n};\nMerkleHashCalculator.prototype.calculateHashOfValueInternal = function (valuetoHash, serializeFun, hashFunc, merkleHashVersion) {\n var buf = Buffer.alloc(1);\n buf.writeInt8(HASH_PREFIX_LEAF);\n var bufferSum = Buffer.concat([buf, serializeFun(valuetoHash)]);\n return hashFunc(bufferSum, this.cryptoSystem, merkleHashVersion);\n};\nMerkleHashCalculator.prototype.isContainerProofValueLeaf = function (value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Array || typeof value === 'object') {\n return true;\n }\n else {\n return false;\n }\n};\nmodule.exports = { MerkleHashCalculator, CryptoSystem };\n//# sourceMappingURL=merklehashcalculator.js.map","\"use strict\";\nvar util = require('../formatter');\nconst { Buffer } = require('buffer');\nvar PathSet = require('./path').PathSet;\nvar PathLeafElement = require('./path').PathLeafElement;\nvar EmptyLeaf = require('./binarytree').EmptyLeaf;\nvar Leaf = require('./binarytree').Leaf;\nvar Node = require('./binarytree').Node;\nvar BinaryTree = require('./binarytree').BinaryTree;\nvar ArrayHeadNode = require('./binarytree').ArrayHeadNode;\nvar DictHeadNode = require('./binarytree').DictHeadNode;\nconst NO_PATHS = new PathSet([]);\n/**\n * The factory does the conversion between list of elements and tree of elements.\n *\n * Note: The idea is that you should sub class for each type of element you want to build.\n */\nfunction BinaryTreeFactory() { }\n/**\n * Transforms the incoming leaf into an [BinaryTreeElement]\n * The idea with this function is that it can be recursive (if the leaf in turn is complex object with sub objects).\n *\n * Note: If we don't have a path here we can try to find the leaf in the cache.\n *\n * @param leaf the raw data we should wrap in a leaf\n * @param paths a collection of proof paths that might point to this leaf\n * @return the resulting [BinaryTreeElement] the leaf got converted to\n */\nBinaryTreeFactory.prototype.handleLeaf = function (leaf, paths, isRoot = false, merkleHashVersion) {\n if (merkleHashVersion == undefined || merkleHashVersion == null) {\n console.error(\"stack trace\", new Error().stack);\n throw new Error(\"Merkle hash version is undefined or null\");\n }\n if (paths.length == 0 && !isRoot) {\n return this.innerHandleLeaf(leaf, this.getEmptyPathSet(), merkleHashVersion);\n }\n else {\n return this.innerHandleLeaf(leaf, paths, merkleHashVersion);\n }\n};\n/**\n *\n */\nBinaryTreeFactory.prototype.getEmptyPathSet = function () {\n return NO_PATHS;\n};\n/**\n * At this point we should have looked in cache.\n *\n * @param leaf we should turn into a tree element\n * @param {PathSet} paths\n * @return the tree element we created.\n */\nBinaryTreeFactory.prototype.innerHandleLeaf = function (leaf, paths, merkleHashVersion) {\n if (leaf == null) {\n return this.handlePrimitiveLeaf(leaf, paths);\n }\n if (Buffer.isBuffer(leaf)) {\n return this.handlePrimitiveLeaf(leaf, paths);\n }\n if (typeof leaf === 'string') {\n return this.handlePrimitiveLeaf(leaf, paths);\n }\n if (typeof leaf === 'number') {\n return this.handlePrimitiveLeaf(leaf, paths);\n }\n if (typeof leaf === 'bigint') {\n return this.handlePrimitiveLeaf(leaf, paths);\n }\n if (typeof leaf === 'boolean') {\n return this.handlePrimitiveLeaf(leaf ? 1 : 0, paths);\n }\n if (leaf.constructor === Array) {\n return this.buildFromArray(leaf, paths, merkleHashVersion);\n }\n if (typeof leaf === 'object') {\n return this.buildFromDictionary(leaf, paths, merkleHashVersion);\n }\n else {\n throw new Error(\"Unsupported data type\");\n }\n};\n/**\n * Just like [handleLeaf] but we know that this leaf should not be a complex type, but something we can\n * immediately wrap\n *\n * @param leaf\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.handlePrimitiveLeaf = function (leaf, paths) {\n var pathElem = paths.getPathLeafOrElseAnyCurrentPathElement();\n if (pathElem != null && !(pathElem instanceof PathLeafElement)) {\n throw new Error(\"Path does not match the tree structure. We are at a leaf \" + leaf + \" but found path element \" + pathElem);\n }\n return new Leaf(leaf, pathElem);\n};\n/**\n * Calls itself until the return value only holds 1 element\n *\n * Note: This method can only create standard [Node] that fills up the area between the \"top\" and the leaves.\n * These \"in-between\" nodes cannot be \"path leaf\" or have any interesting properties.\n *\n * @param layer What layer we aim calculate\n * @param inList The args of nodes we should build from\n * @return All [BinaryTreeElement] nodes of the next layer\n */\nBinaryTreeFactory.prototype.buildHigherLayer = function (layer, inList) {\n if (inList.length === 0) {\n throw new Error(\"Cannot work on empty arrays. Layer: \" + layer);\n }\n else if (inList.length === 1) {\n return inList;\n }\n var returnArray = new Array();\n var nrOfNodesToCreate = Math.floor(inList.length / 2);\n var leftValue = null;\n var isLeft = true;\n for (var i = 0; i < inList.length; i++) {\n if (isLeft) {\n leftValue = inList[i];\n isLeft = false;\n }\n else {\n var tempNode = new Node(leftValue, inList[i]);\n returnArray.push(tempNode);\n nrOfNodesToCreate--;\n isLeft = true;\n leftValue = null;\n }\n }\n if (!isLeft) {\n // If there is odd number of nodes, then move the last node up one level\n returnArray.push(leftValue);\n }\n // Extra check\n if (nrOfNodesToCreate != 0) {\n util.logDebug(\"Why didn't we build exactly the correct amount? Layer: \" + layer + \" , residue: \" + nrOfNodesToCreate + \" , input args size: \" + inList.length + \".\");\n }\n return this.buildHigherLayer((layer + 1), returnArray);\n};\nBinaryTreeFactory.prototype.build = function (data, merkleHashVersion) {\n return this.buildWithPath(data, NO_PATHS, merkleHashVersion);\n};\n/**\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.buildWithPath = function (data, paths, merkleHashVersion) {\n var result = this.handleLeaf(data, paths, true, merkleHashVersion);\n return new BinaryTree(result);\n};\n/**\n * @param {Array} array\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.buildFromArray = function (array, paths, merkleHashVersion) {\n if (merkleHashVersion == undefined || merkleHashVersion == null) {\n console.error(\"stack trace\", new Error().stack);\n throw new Error(\"Merkle hash version is undefined or null\");\n }\n var pathElem = paths.getPathLeafOrElseAnyCurrentPathElement();\n // 1. Build leaf layer\n if (array.length == 0) {\n return new ArrayHeadNode(new EmptyLeaf(), new EmptyLeaf(), array, 0, 0, pathElem);\n }\n var leafArray = this.buildLeafElements(array, paths, merkleHashVersion);\n //Merkle hash version 2 and above - check\n if (leafArray.length == 1 && leafArray[0] instanceof Node && merkleHashVersion >= 2) {\n return new ArrayHeadNode(leafArray[0], new EmptyLeaf(), array, array.length, pathElem);\n }\n // 2. Build all higher layers\n var result = this.buildHigherLayer(1, leafArray);\n // 3. Fix and return the root node\n var orgRoot = result[0];\n if (orgRoot instanceof Node) {\n return new ArrayHeadNode(orgRoot.left, orgRoot.right, array, array.length, pathElem);\n }\n if (orgRoot instanceof Leaf) {\n return this.buildFromOneLeaf(array, orgRoot, pathElem);\n }\n else {\n throw new Error(\"Should not find element of this type here\");\n }\n};\n/**\n *\n */\nBinaryTreeFactory.prototype.buildFromOneLeaf = function (array, orgRoot, pathElem) {\n if (array.length > 1) {\n throw new Error(\"How come we got a leaf returned when we had \" + array.length + \" elements is the args?\");\n }\n else {\n return new ArrayHeadNode(orgRoot, new EmptyLeaf(), array, array.length, pathElem);\n }\n};\n/**\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.buildLeafElements = function (leafList, paths, merkleHashVersion) {\n var leafArray = new Array();\n var onlyArrayPaths = paths.keepOnlyArrayPaths(); // For performance, since we will loop soon\n for (var i = 0; i < leafList.length; i++) {\n var pathsRelevantForThisLeaf = onlyArrayPaths.getTailIfFirstElementIsArrayOfThisIndexFromList(i);\n var leaf = leafList[i];\n var binaryTreeElement = this.handleLeaf(leaf, pathsRelevantForThisLeaf, false, merkleHashVersion);\n leafArray.push(binaryTreeElement);\n }\n return leafArray;\n};\n/**\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.buildFromDictionary = function (dict, paths, merkleHashVersion) {\n var pathElem = paths.getPathLeafOrElseAnyCurrentPathElement();\n // Needs to be sorted, or else the order is undefined\n var keys = Object.keys(dict).sort();\n if (keys.length == 0) {\n return new DictHeadNode(new EmptyLeaf(), new EmptyLeaf(), dict, keys.length, 0, pathElem);\n }\n // 1. Build first (leaf) layer\n var leafArray = this.buildLeafElementFromDict(keys, dict, paths, merkleHashVersion);\n // 2. Build all higher layers\n var result = this.buildHigherLayer(1, leafArray);\n // 3. Fix and return the root node\n var orgRoot = result[0];\n if (orgRoot instanceof Node) {\n return new DictHeadNode(orgRoot.left, orgRoot.right, dict, keys.length, pathElem);\n }\n else {\n throw new Error(\"Should not find element of this type here: \" + typeof orgRoot);\n }\n};\n/**\n * @param {PathSet} paths\n */\nBinaryTreeFactory.prototype.buildLeafElementFromDict = function (keys, dict, paths, merkleHashVersion) {\n var leafArray = new Array();\n var onlyDictPaths = paths.keepOnlyDictPaths(); // For performance, since we will loop soon\n for (var i = 0; i < keys.length; i++) {\n // The key cannot not be proved, so NO_PATHS\n var key = keys[i];\n var keyElement = this.handleLeaf(key, NO_PATHS, false, merkleHashVersion);\n leafArray.push(keyElement);\n var content = dict[key];\n var pathsRelevantForThisLeaf = onlyDictPaths.getTailIfFirstElementIsDictOfThisKeyFromList(key);\n var contentElement = this.handleLeaf(content, pathsRelevantForThisLeaf, false, merkleHashVersion);\n leafArray.push(contentElement);\n }\n return leafArray;\n};\nmodule.exports = { BinaryTreeFactory };\n//# sourceMappingURL=binarytreefactory.js.map","\"use strict\";\nvar SearchablePathElement = require('../path').SearchablePathElement;\nvar HASH_PREFIX_NODE = require('../binarytree').HASH_PREFIX_NODE;\nvar HASH_PREFIX_NODE_ARRAY = require('../binarytree').HASH_PREFIX_NODE_ARRAY;\nvar HASH_PREFIX_NODE_DICT = require('../binarytree').HASH_PREFIX_NODE_DICT;\n/**\n *\n */\nfunction MerkleProofElement() { }\n/**\n *\n * @param {Buffer} prefix\n * @param {MerkleProofElement} left\n * @param {MerkleProofElement} right\n */\nfunction ProofNode(prefix, left, right) {\n this.prefix = prefix;\n this.left = left;\n this.right = right;\n}\nProofNode.prototype = Object.create(MerkleProofElement.prototype);\nProofNode.prototype.constructor = ProofNode;\n/**\n *\n * @param {MerkleProofElement} left\n * @param {MerkleProofElement} right\n */\nfunction ProofNodeSimple(left, right) {\n ProofNode.call(this, HASH_PREFIX_NODE, left, right);\n}\nProofNodeSimple.prototype = Object.create(ProofNode.prototype);\nProofNodeSimple.prototype.constructor = ProofNodeSimple;\n/**\n *\n * @param {*} content\n * @param {SearchablePathElement} pathElem\n */\nfunction ProofValueLeaf(content, pathElem) {\n this.content = content;\n this.pathElem = pathElem;\n}\nProofValueLeaf.prototype = Object.create(MerkleProofElement.prototype);\nProofValueLeaf.prototype.constructor = ProofValueLeaf;\n/**\n *\n * @param {Buffer} merkleHash\n */\nfunction ProofHashedLeaf(merkleHash) {\n this.merkleHash = merkleHash;\n}\nProofHashedLeaf.prototype = Object.create(MerkleProofElement.prototype);\nProofHashedLeaf.prototype.constructor = ProofHashedLeaf;\n/**\n * @param {ProofHashedLeaf} other\n */\nProofHashedLeaf.prototype.equals = function (other) {\n if (other instanceof ProofHashedLeaf) {\n return this.merkleHash.equals(other.merkleHash);\n }\n else {\n return false;\n }\n};\n/**\n *\n * @param {MerkleProofElement} left\n * @param {MerkleProofElement} right\n * @param {SearchablePathElement} pathElem\n */\nfunction ProofNodeArrayHead(left, right, pathElem = null) {\n ProofNode.call(this, HASH_PREFIX_NODE_ARRAY, left, right);\n this.pathElem = pathElem;\n}\nProofNodeArrayHead.prototype = Object.create(ProofNode.prototype);\nProofNodeArrayHead.prototype.constructor = ProofNodeArrayHead;\n/**\n *\n * @param {MerkleProofElement} left\n * @param {MerkleProofElement} right\n * @param {SearchablePathElement} pathElem\n */\nfunction ProofNodeDictHead(left, right, pathElem = null) {\n ProofNode.call(this, HASH_PREFIX_NODE_DICT, left, right);\n this.pathElem = pathElem;\n}\nProofNodeDictHead.prototype = Object.create(ProofNode.prototype);\nProofNodeDictHead.prototype.constructor = ProofNodeDictHead;\n/**\n *\n * @param {MerkleProofElement} root\n */\nfunction MerkleProofTree(root) {\n this.root = root;\n}\nMerkleProofTree.prototype.maxLevel = function () {\n return this.maxLevelInternal(this.root);\n};\n/**\n * @param {MerkleProofElement} node\n */\nMerkleProofTree.prototype.maxLevelInternal = function (node) {\n if (node instanceof ProofValueLeaf) {\n return 1;\n }\n else if (node instanceof ProofHashedLeaf) {\n return 1;\n }\n else if (node instanceof ProofNode) {\n return Math.max(this.maxLevelInternal(node.left), this.maxLevelInternal(node.right)) + 1;\n }\n else {\n throw new Error(\"Should be able to handle node type: \" + typeof node);\n }\n};\nmodule.exports = { ProofNode, ProofNodeSimple, ProofHashedLeaf, ProofValueLeaf,\n ProofNodeArrayHead, ProofNodeDictHead, MerkleProofElement, MerkleProofTree };\n//# sourceMappingURL=merkleprooftree.js.map","\"use strict\";\nconst { Buffer } = require('buffer');\nvar BinaryTreeElement = require('../binarytree').BinaryTreeElement;\nvar Node = require('../binarytree').Node;\nvar Leaf = require('../binarytree').Leaf;\nvar EmptyLeaf = require('../binarytree').EmptyLeaf;\nvar BinaryTree = require('../binarytree').BinaryTree;\nvar ProofHashedLeaf = require('./merkleprooftree').ProofHashedLeaf;\nvar ProofValueLeaf = require('./merkleprooftree').ProofValueLeaf;\nvar MerkleProofElement = require('./merkleprooftree').MerkleProofElement;\nvar MerkleProofTree = require('./merkleprooftree').MerkleProofTree;\nvar ProofNodeArrayHead = require('./merkleprooftree').ProofNodeArrayHead;\nvar ProofNodeDictHead = require('./merkleprooftree').ProofNodeDictHead;\nvar PathLeafElement = require('../path').PathLeafElement;\nvar SubTreeRootNode = require('../binarytree').SubTreeRootNode;\nvar ArrayHeadNode = require('../binarytree').ArrayHeadNode;\nvar DictHeadNode = require('../binarytree').DictHeadNode;\nvar ProofNodeSimple = require('./merkleprooftree').ProofNodeSimple;\nconst EMPTY_HASH = new Buffer.alloc(32);\n/**\n *\n */\nfunction MerkleProofTreeFactory() { }\n/**\n * @param {BinaryTree} originalTree\n */\nMerkleProofTreeFactory.prototype.buildFromBinaryTree = function (originalTree, calculator) {\n var rootElem = this.buildFromBinaryTreeInternal(originalTree.root, calculator);\n return new MerkleProofTree(rootElem);\n};\n/**\n * @param {BinaryTreeElement} elem\n * @param {*} calculator\n */\nMerkleProofTreeFactory.prototype.buildFromBinaryTreeInternal = function (elem, calculator) {\n if (elem instanceof EmptyLeaf) {\n return new ProofHashedLeaf(EMPTY_HASH);\n }\n else if (elem instanceof Leaf) {\n var pathElem = elem.pathElem;\n if (pathElem != null) {\n if (pathElem instanceof PathLeafElement) {\n return new ProofValueLeaf(elem.content, pathElem.previous);\n }\n else {\n throw new Error(\"The path and structure don't match. We are at a leaf, but path elem is not a leaf: \" + pathElem);\n }\n }\n else {\n // make a hash\n var hash = calculator.calculateLeafHash(elem.content);\n return new ProofHashedLeaf(hash);\n }\n }\n else if (elem instanceof SubTreeRootNode) {\n var pathElem = elem.pathElem;\n if (pathElem != null) {\n if (pathElem instanceof PathLeafElement) {\n // Don't convert it\n return new ProofValueLeaf(elem.content, pathElem.previous);\n }\n else {\n return this.convertNode(elem, calculator);\n }\n }\n else {\n return this.convertNode(elem, calculator);\n }\n }\n else if (elem instanceof Node) {\n return this.convertNode(elem, calculator);\n }\n else {\n throw new Error(\"Cannot handle \" + elem);\n }\n};\n/**\n * @param {Node} node\n */\nMerkleProofTreeFactory.prototype.convertNode = function (node, calculator) {\n var left = this.buildFromBinaryTreeInternal(node.left, calculator);\n var right = this.buildFromBinaryTreeInternal(node.right, calculator);\n if (left instanceof ProofHashedLeaf && right instanceof ProofHashedLeaf) {\n var addedHash = calculator.calculateNodeHash(node.getPrefixByte(), left.merkleHash, right.merkleHash);\n return new ProofHashedLeaf(addedHash);\n }\n else {\n return this.buildNodeOfCorrectType(node, left, right);\n }\n};\n/**\n * @param {ArrayHeadNode} node\n */\nMerkleProofTreeFactory.prototype.extractSearchablePathElement = function (node) {\n var pathElem = node.pathElem;\n if (pathElem != null) {\n return pathElem.previous;\n }\n else {\n return null;\n }\n};\n/**\n * @param {Node} node\n * @param {MerkleProofElement} left\n * @param {MerkleProofElement} right\n */\nMerkleProofTreeFactory.prototype.buildNodeOfCorrectType = function (node, left, right) {\n if (node instanceof ArrayHeadNode) {\n return new ProofNodeArrayHead(left, right, this.extractSearchablePathElement(node));\n }\n else if (node instanceof DictHeadNode) {\n return new ProofNodeDictHead(left, right, this.extractSearchablePathElement(node));\n }\n else if (node instanceof Node) {\n return new ProofNodeSimple(left, right);\n }\n else {\n throw new Error(\"Should have taken care of this node type: \" + node);\n }\n};\nmodule.exports = { MerkleProofTreeFactory };\n//# sourceMappingURL=merkleprooftreefactory.js.map","\"use strict\";\n/**\n *\n * @param {Buffer} merkleHash\n */\nfunction MerkleHashSummary(merkleHash) {\n this.merkleHash = merkleHash;\n}\n/**\n * @param {MerkleHashSummary} other\n */\nMerkleHashSummary.prototype.equals = function (other) {\n if (this === other)\n return true;\n if (typeof this != typeof other)\n return false;\n if (this.merkleHash.compare(other.merkleHash) === 0) {\n return true;\n }\n return false;\n};\nmodule.exports = { MerkleHashSummary };\n//# sourceMappingURL=merklehashcarrier.js.map","\"use strict\";\nvar BinaryTreeFactory = require('../binarytreefactory').BinaryTreeFactory;\nvar MerkleProofTreeFactory = require('./merkleprooftreefactory').MerkleProofTreeFactory;\nvar MerkleHashCalculator = require('../merklehashcalculator').MerkleHashCalculator;\nvar MerkleProofTree = require('./merkleprooftree').MerkleProofTree;\nvar MerkleProofElement = require('./merkleprooftree').MerkleProofElement;\nvar ProofHashedLeaf = require('./merkleprooftree').ProofHashedLeaf;\nvar ProofValueLeaf = require('./merkleprooftree').ProofValueLeaf;\nvar ProofNode = require('./merkleprooftree').ProofNode;\nvar MerkleHashSummary = require('./merklehashcarrier').MerkleHashSummary;\n/**\n *\n * @param {BinaryTreeFactory} treeFactory\n * @param {MerkleProofTreeFactory} proofFactory\n */\nfunction MerkleHashSummaryFactory(treeFactory, proofFactory) {\n this.treeFactory = treeFactory;\n this.proofFactory = proofFactory;\n}\n/**\n * @param {any} value\n * @param {MerkleHashCalculator} calculator\n */\nMerkleHashSummaryFactory.prototype.calculateMerkleRoot = function (value, calculator, merkleHashVersion) {\n var binaryTree = this.treeFactory.build(value, merkleHashVersion);\n var proofTree = this.proofFactory.buildFromBinaryTree(binaryTree, calculator);\n return this.calculateMerkleRootOfTree(proofTree, calculator);\n};\n/**\n * @param {MerkleProofTree} value\n * @param {MerkleHashCalculator} calculator\n */\nMerkleHashSummaryFactory.prototype.calculateMerkleTreeRoot = function (tree, calculator, merkleHashVersion) {\n return this.calculateMerkleRootOfTree(tree, calculator, merkleHashVersion);\n};\n/**\n * @param {MerkleProofTree} proofTree\n * @param {MerkleHashCalculator} calculator\n */\nMerkleHashSummaryFactory.prototype.calculateMerkleRootOfTree = function (proofTree, calculator, merkleHashVersion) {\n var calculatedSummary = this.calculateMerkleRootInternal(proofTree.root, calculator, merkleHashVersion);\n return new MerkleHashSummary(calculatedSummary);\n};\n/**\n * @param {MerkleProofElement} currentElement\n * @param {MerkleHashCalculator} calculator\n */\nMerkleHashSummaryFactory.prototype.calculateMerkleRootInternal = function (currentElement, calculator, merkleHashVersion) {\n if (currentElement instanceof ProofHashedLeaf) {\n return currentElement.merkleHash;\n }\n else if (currentElement instanceof ProofValueLeaf) {\n var value = currentElement.content;\n if (calculator.isContainerProofValueLeaf(value)) {\n // We have a container value to prove, so need to convert the value to a binary tree, and THEN hash it\n var merkleProofTree = this.buildProofTree(value, calculator, merkleHashVersion);\n return this.calculateMerkleRootInternal(merkleProofTree.root, calculator, merkleHashVersion);\n }\n else {\n // This is a primitive value, just hash it\n return calculator.calculateLeafHash(value, merkleHashVersion);\n }\n }\n else if (currentElement instanceof ProofNode) {\n var left = this.calculateMerkleRootInternal(currentElement.left, calculator, merkleHashVersion);\n var right = this.calculateMerkleRootInternal(currentElement.right, calculator, merkleHashVersion);\n return calculator.calculateNodeHash(currentElement.prefix, left, right);\n }\n else {\n throw new Error(\"Should have handled this type? \" + typeof currentElement);\n }\n};\n/**\n * @param {any} value\n * @param {MerkleHashCalculator} calculator\n */\nMerkleHashSummaryFactory.prototype.buildProofTree = function (value, calculator, merkleHashVersion) {\n var root = this.treeFactory.build(value, merkleHashVersion);\n return this.proofFactory.buildFromBinaryTree(root, calculator);\n};\nmodule.exports = { MerkleHashSummaryFactory };\n//# sourceMappingURL=merklehashsummaryfactory.js.map","\"use strict\";\nvar MerkleHashCalculator = require('../merklehashcalculator').MerkleHashCalculator;\nvar MerkleHashSummaryFactory = require('./merklehashsummaryfactory').MerkleHashSummaryFactory;\nvar BinaryTreeFactory = require('../binarytreefactory').BinaryTreeFactory;\nvar MerkleProofTreeFactory = require('./merkleprooftreefactory').MerkleProofTreeFactory;\nvar treeFactory = new BinaryTreeFactory();\nvar proofFactory = new MerkleProofTreeFactory();\nvar PathSet = require('../path').PathSet;\nvar MerkleProofTree = require('./merkleprooftree').MerkleProofTree;\n/**\n * Calculates the merkle root hash of the structure.\n *\n * @param {any} value\n * @param {MerkleHashCalculator} calculator describes the method we use for hashing and serialization\n * @return the merkle root hash (32 bytes) of the data structure.\n */\nfunction merkleHash(value, calculator, merkleHashVersion) {\n return merkleHashSummary(value, calculator, merkleHashVersion).merkleHash;\n}\n/**\n *\n * @param {MerkleProofTree} tree\n * @param {MerkleHashCalculator} calculator\n */\nfunction merkleTreeHash(tree, calculator, merkleHashVersion) {\n return merkleProofHashSummary(tree, calculator, merkleHashVersion).merkleHash;\n}\n/**\n * Calculates the merkle root hash of the structure\n *\n * @param {any} value\n * @param {MerkleHashCalculator} calculator describes the method we use for hashing and serialization\n * @return the merkle root hash summary\n */\nfunction merkleHashSummary(value, calculator, merkleHashVersion) {\n var summaryFactory = new MerkleHashSummaryFactory(treeFactory, proofFactory);\n return summaryFactory.calculateMerkleRoot(value, calculator, merkleHashVersion);\n}\n/**\n *\n * @param {MerkleProofTree} tree\n * @param {MerkleHashCalculator} calculator\n * @param {number} merkleHashVersion\n */\nfunction merkleProofHashSummary(tree, calculator, merkleHashVersion) {\n var summaryFactory = new MerkleHashSummaryFactory(treeFactory, proofFactory);\n return summaryFactory.calculateMerkleTreeRoot(tree, calculator, merkleHashVersion);\n}\n/**\n *\n * @param {any} value\n * @param {PathSet} pathSet\n * @param {MerkleHashCalculator} calculator\n * @param {number} merkleHashVersion\n*/\nfunction generateProof(value, pathSet, calculator, merkleHashVersion) {\n var binaryTree = treeFactory.buildWithPath(value, pathSet, merkleHashVersion);\n return proofFactory.buildFromBinaryTree(binaryTree, calculator);\n}\nmodule.exports = { merkleHash, merkleTreeHash, merkleHashSummary, generateProof };\n//# sourceMappingURL=merkleproof.js.map","import { MerkleHashCalculator, CryptoSystem } from \"../merkle/merklehashcalculator\";\nconst theMerkleHashCalculator = new MerkleHashCalculator(new CryptoSystem());\nimport { merkleHashSummary } from \"../merkle/proof/merkleproof\";\nimport * as serialization from \"../gtx/serialization\";\nconst gtvHash = (obj, merkleHashVersion) => {\n return merkleHashSummary(obj, theMerkleHashCalculator, merkleHashVersion).merkleHash;\n};\nconst encode = serialization.encodeValue;\nconst decode = serialization.decodeValue;\nexport { encode, decode, gtvHash };\n//# sourceMappingURL=index.js.map","import * as serialization from \"./serialization\";\nconst encode = serialization.encodeValueGtx;\nconst decode = serialization.decodeValueGtx;\nexport { encode, decode };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as gtv from \"../gtv\";\nimport { checkDigestSignature, createPublicKey, makeKeyPair, signDigest, } from \"../encryption/encryption\";\nimport { AlreadySignedTransactionException, MissingGtxException, MissingSignerException, } from \"./errors\";\nimport { encode as gtxEncode, decode as gtxDecode } from \"./index\";\nimport { ensureBuffer } from \"../formatter\";\nexport function emptyGtx(blockchainRid) {\n return { blockchainRid, operations: [], signers: [] };\n}\n/**\n * Adds a function call to a GTX. Creates a new GTX if none specified.\n * This function will throw Error if gtx is already signed\n * @param opName the name of the function to call\n * @param args the array of arguments of the function call. If no args, this must be an empty array\n * @param gtx the function call will be added to this gtx\n * @returns the gtx\n * @throws if gtx is null or if gtx is already signed\n */\nexport function addTransactionToGtx(opName, args, gtx) {\n if (gtx == null) {\n throw new MissingGtxException();\n }\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"function\");\n }\n gtx.operations.push({ opName: opName, args: args });\n return gtx;\n}\nexport function addSignerToGtx(signer, gtx) {\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"signer\");\n }\n gtx.signers.push(signer);\n}\n/**\n * Serializes the gtx to get tx hash\n * @param gtx the gtx to serialize\n */\nexport function getDigest(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\n/**\n * Serializes the gtx for signing\n * @param gtx the gtx to serialize\n */\nexport function getDigestToSign(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\nexport function getDigestToSignFromRawGtxBody(gtxBody, merkleHashVersion) {\n return gtv.gtvHash(gtxBody, merkleHashVersion);\n}\nexport function gtxToRawGtxBody(gtx) {\n return [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ];\n}\nexport function gtxToRawGtx(gtx) {\n var _a;\n return [\n [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ],\n (_a = gtx.signatures) !== null && _a !== void 0 ? _a : [],\n ];\n}\nexport function sign(gtx, privOrSigProv, merkleHashVersion, pubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n if (privOrSigProv instanceof Buffer) {\n const digestToSign = getDigestToSign(gtx, merkleHashVersion);\n const signature = signDigest(digestToSign, privOrSigProv);\n return addSignature(pubKey || makeKeyPair(privOrSigProv).pubKey, signature, gtx);\n }\n else {\n // Removes signatures and extract the rawgtxBody\n const rawGtxBody = gtxToRawGtxBody(gtx);\n const signature = yield privOrSigProv.sign(rawGtxBody);\n return addSignature(privOrSigProv.pubKey, signature, gtx);\n }\n });\n}\nexport function signRawTransaction(_keyPair, _rawTransaction) {\n throw Error(\"TODO\");\n //TODO\n //const gtx = module.exports.deserialize(rawTransaction);\n //module.exports.sign(keyPair.privKey, keyPair.pubKey, gtx);\n // return module.exports.serialize(gtx)\n}\n/**\n * Adds a signature to the gtx\n */\nexport function addSignature(pubKeyBuffer, signatureBuffer, gtx) {\n if (!gtx.signatures) {\n gtx.signatures = Array(gtx.signers.length);\n }\n const signerIndex = gtx.signers.findIndex((signer) => pubKeyBuffer.equals(signer));\n if (signerIndex === -1) {\n throw new MissingSignerException();\n }\n gtx.signatures[signerIndex] = signatureBuffer;\n return gtx;\n}\nexport function serialize(gtx) {\n if (!gtx.signatures) {\n // TODO\n // The gtx is not signed, but we must include\n // the signatures attribute, so let's add that.\n gtx.signatures = [];\n }\n return gtxEncode([gtxToRawGtxBody(gtx), gtx.signatures]);\n}\nexport function deserialize(gtxBytes) {\n const deserializedTx = gtxDecode(gtxBytes);\n const body = deserializedTx[0];\n const gtvTxBody = {\n blockchainRid: body[0],\n operations: body[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: body[2],\n };\n const signatures = deserializedTx[1];\n return {\n blockchainRid: gtvTxBody.blockchainRid,\n operations: gtvTxBody.operations,\n signers: gtvTxBody.signers,\n signatures,\n };\n}\nexport function checkGTXSignatures(txHash, gtx) {\n var _a;\n if (!Array.isArray(gtx.signatures) || gtx.signatures.length === 0) {\n return false;\n }\n for (const i in gtx.signers) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], (_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]);\n if (!signValid)\n return signValid;\n }\n return true;\n}\nexport function checkExistingGTXSignatures(txHash, gtx) {\n var _a;\n for (const i in gtx.signers) {\n if ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], gtx.signatures[i]);\n if (!signValid)\n return signValid;\n }\n }\n return true;\n}\nexport function newSignatureProvider(merkleHashVersion, keyPair) {\n let pub, priv;\n if (keyPair) {\n priv = ensureBuffer(keyPair.privKey);\n pub = keyPair.pubKey ? ensureBuffer(keyPair.pubKey) : createPublicKey(priv);\n }\n else {\n ({ privKey: priv, pubKey: pub } = makeKeyPair());\n }\n return {\n pubKey: pub,\n sign: (gtx) => __awaiter(this, void 0, void 0, function* () {\n const signature = getDigestToSignFromRawGtxBody(gtx, merkleHashVersion);\n return signDigest(signature, priv);\n }),\n };\n}\nexport function rawGtvToGtx(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const gtvArray = gtv;\n if (!Array.isArray(gtvArray[0])) {\n throw new Error(\"First element must be an array\");\n }\n if (!Array.isArray(gtvArray[1])) {\n throw new Error(\"Second element must be an array\");\n }\n gtvArray[1].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n const gtxBody = rawGtvToGtxBody(gtvArray[0]);\n return Object.assign(Object.assign({}, gtxBody), { signatures: gtvArray[1] });\n}\nfunction rawGtvToGtxBody(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 3) {\n throw new Error(\"Gtv must be an array of size 3\");\n }\n const array = gtv;\n if (!Buffer.isBuffer(array[0])) {\n throw new Error(\"First element must be a byte array\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n if (!Array.isArray(array[2])) {\n throw new Error(\"Third element must be an array\");\n }\n array[2].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n return {\n blockchainRid: array[0],\n operations: array[1].map(element => rawGtvToRellOp(element)),\n signers: array[2],\n };\n}\nfunction rawGtvToRellOp(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const array = gtv;\n if (typeof array[0] !== \"string\") {\n throw new Error(\"First element must be a string\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n return { opName: array[0], args: array[1] };\n}\n//# sourceMappingURL=gtx.js.map","var _a;\nvar MsgType;\n(function (MsgType) {\n MsgType[\"Debug\"] = \"DEBUG\";\n MsgType[\"Info\"] = \"INFO\";\n MsgType[\"Error\"] = \"ERROR\";\n MsgType[\"Warning\"] = \"WARNING\";\n})(MsgType || (MsgType = {}));\nvar LogColor;\n(function (LogColor) {\n LogColor[\"Red\"] = \"\\u001B[91m\";\n LogColor[\"Green\"] = \"\\u001B[92m\";\n LogColor[\"Blue\"] = \"\\u001B[36m\";\n LogColor[\"Yellow\"] = \"\\u001B[93m\";\n LogColor[\"StopColor\"] = \"\\u001B[0m\";\n})(LogColor || (LogColor = {}));\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Debug\"] = \"DEBUG\";\n LogLevel[\"Info\"] = \"INFO\";\n LogLevel[\"Error\"] = \"ERROR\";\n LogLevel[\"Warning\"] = \"WARNING\";\n LogLevel[\"Disabled\"] = \"DISABLED\";\n})(LogLevel || (LogLevel = {}));\nconst logLevelMap = {\n [LogLevel.Warning]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Debug]: 3,\n [LogLevel.Error]: 0,\n [LogLevel.Disabled]: -1,\n};\nconst DEFAULT_LOG_LEVEL = logLevelMap[LogLevel.Warning];\nlet logLevel = typeof process === \"undefined\"\n ? DEFAULT_LOG_LEVEL\n : (_a = logLevelMap[process.env.LOG_LEVEL]) !== null && _a !== void 0 ? _a : DEFAULT_LOG_LEVEL;\nfunction setLogLevel(level) {\n if (typeof level === \"number\") {\n console.warn(\"Passing a number is deprecated, please use LogLevel enum instead\");\n logLevel = level;\n return;\n }\n logLevel = logLevelMap[level];\n}\nfunction getLogLevel() {\n return logLevel;\n}\nfunction debug(message, moduleName) {\n if (logLevel >= 3) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Debug,\n color: LogColor.Blue,\n });\n }\n}\nfunction info(message, moduleName) {\n if (logLevel >= 2) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Info,\n color: LogColor.Green,\n });\n }\n}\nfunction error(message, moduleName) {\n if (logLevel != -1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Error,\n color: LogColor.Red,\n });\n }\n}\nfunction warning(message, moduleName) {\n if (logLevel >= 1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Warning,\n color: LogColor.Yellow,\n });\n }\n}\nfunction emitLogMessage({ msgType, message, color, moduleName, }) {\n const time = getTimestamp();\n const moduleNameMessage = moduleName ? `[${moduleName}]` : \"\";\n console.log(`[${time}] ${color}${msgType}:${LogColor.StopColor} ${moduleNameMessage} ${message}`);\n}\nfunction getTimestamp() {\n const pad = (n, s = 2) => `${new Array(s).fill(0)}${n}`.slice(-s);\n const date = new Date();\n return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}:${pad(date.getMilliseconds(), 3)}`;\n}\nexport function logger(moduleName) {\n return {\n debug: (message) => debug(message, moduleName),\n info,\n error,\n warning,\n setLogLevel,\n disable: () => setLogLevel(logLevelMap[LogLevel.Disabled]),\n };\n}\nexport { debug, info, error, warning, setLogLevel, getLogLevel };\n//# sourceMappingURL=logger.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as gtxTool from \"./gtx\";\nimport * as logger from \"../logger\";\nimport { removeDuplicateSigners } from \"../formatter\";\nexport function createClient(restApiClient, blockchainRid, functionNames, merkleHashVersion) {\n functionNames.push(\"message\");\n function transaction(gtx) {\n return {\n gtx,\n sign: function (privOrSigProv, pubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`signing transaction with ${privOrSigProv instanceof Buffer\n ? `privkey: ${privOrSigProv.toString(\"hex\")}`\n : `signature provider [pubKey: ${privOrSigProv.pubKey}]`}`);\n if (privOrSigProv instanceof Buffer) {\n yield gtxTool.sign(gtx, privOrSigProv, merkleHashVersion, pubKey);\n }\n else {\n yield gtxTool.sign(gtx, privOrSigProv, merkleHashVersion);\n }\n });\n },\n getTxRID: function () {\n return this.getDigestToSign();\n },\n getDigestToSign: function () {\n return gtxTool.getDigestToSign(this.gtx, merkleHashVersion);\n },\n addSignature: function (pubKey, signature) {\n gtxTool.addSignature(pubKey, signature, gtx);\n },\n // raw call\n addOperation: function (name, ...args) {\n gtxTool.addTransactionToGtx(name, args, gtx);\n },\n postAndWaitConfirmation() {\n return restApiClient.postAndWaitConfirmation(gtxTool.serialize(gtx), this.getTxRID());\n },\n send: function (callback) {\n const gtxBytes = gtxTool.serialize(gtx);\n restApiClient.postTransaction(gtxBytes, callback);\n // Todo it seems like an error to set a non nullable parent function's input to null\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n gtx = null;\n this.gtxBytes = gtxBytes;\n },\n encode: function () {\n return gtxTool.serialize(gtx);\n },\n };\n }\n function addFunctions(req) {\n functionNames.forEach(functionName => {\n req[functionName] = function (...args) {\n gtxTool.addTransactionToGtx(functionName, args, this.gtx);\n };\n });\n }\n const client = {\n newTransaction: function (signers) {\n signers = removeDuplicateSigners(signers);\n const newGtx = gtxTool.emptyGtx(Buffer.from(blockchainRid, \"hex\"));\n signers.forEach(signer => gtxTool.addSignerToGtx(signer, newGtx));\n const req = transaction(newGtx);\n addFunctions(req);\n return req;\n },\n transactionFromRawTransaction: function (rawTransaction) {\n const gtx = gtxTool.deserialize(rawTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${JSON.stringify(gtx)}`);\n const req = transaction(gtx);\n addFunctions(req);\n return req;\n },\n query: function (nameOrObject, queryArguments) {\n if (typeof nameOrObject === \"string\") {\n return restApiClient.query(nameOrObject, queryArguments);\n }\n else {\n return restApiClient.query(nameOrObject);\n }\n },\n };\n return client;\n}\n//# sourceMappingURL=gtxclient.js.map","import { CustomError } from \"../customError\";\nimport { matchRellErrorString } from \"../formatter\";\nexport class TxRejectedError extends Error {\n constructor(rejectReason) {\n super(`Transaction was rejected, ${rejectReason}`);\n this.name = \"TxRejectedError\";\n this.fullReason = rejectReason;\n const result = matchRellErrorString(rejectReason);\n this.shortReason = result.shortReason;\n this.rellLine = result.rellLine;\n this.operation = result.operation;\n }\n}\nexport class UnexpectedStatusError extends CustomError {\n constructor(status, error) {\n let errorMessage = `Unexpected status code from server. Code: ${status}.`;\n if (status === null) {\n super(errorMessage, 500); // default status code\n }\n else {\n if (error) {\n errorMessage += ` Message: ${error}.`;\n }\n super(errorMessage, status);\n }\n }\n}\nexport class LostMessageError extends Error {\n constructor() {\n super(`Server lost our message`);\n }\n}\nexport class UnexpectedResponseError extends Error {\n constructor() {\n super(`got unexpected response from server`);\n }\n}\nexport class InvalidTxRidException extends CustomError {\n constructor(txRID) {\n super(`expected length 32 of txRID, but got ${txRID && txRID.length}`, 400);\n }\n}\nexport class SerializedTransactionFormatException extends CustomError {\n constructor() {\n super(`messageHash is not a Buffer`, 400);\n }\n}\nexport class GetBridFromChainException extends Error {\n constructor(chainId, reason) {\n super(`Error resolving BRID for chainId ${chainId}, reason: ${reason}`);\n }\n}\nexport class EmptyListOfUrlsException extends CustomError {\n constructor() {\n super(`Failed to initialize rest client with empty list of urls`, 400);\n }\n}\nexport class InvalidBlockchainRIDException extends CustomError {\n constructor() {\n super(`Failed to initialize rest client with blockchain RID that is not 32 bytes`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","export var Method;\n(function (Method) {\n Method[\"GET\"] = \"get\";\n Method[\"POST\"] = \"post\";\n})(Method || (Method = {}));\n//# sourceMappingURL=enums.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as logger from \"../logger\";\nimport { decodeValue } from \"../gtx/serialization\";\nimport { Method } from \"./enums\";\nfunction handleRequest(method, path, endpoint, postObject) {\n return __awaiter(this, void 0, void 0, function* () {\n if (method == Method.GET) {\n return yield get(path, endpoint);\n }\n else {\n return yield post(path, endpoint, postObject);\n }\n });\n}\nexport default handleRequest;\n/**\n * Sends request to get data from a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n */\nfunction get(path, endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`GET URL ${new URL(path, endpoint).href}`);\n try {\n const response = yield fetch(new URL(path, endpoint).href);\n const contentType = response.headers.get(\"Content-Type\");\n let rspBody;\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/json\")) {\n rspBody = yield response.json();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"text/plain\")) {\n rspBody = yield response.text();\n }\n return {\n error: null,\n statusCode: response.status,\n rspBody,\n };\n }\n catch (error) {\n logger.error(error.message);\n return { error, statusCode: null, rspBody: null };\n }\n });\n}\n/**\n * Sends request to post data to a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n * @param requestBody request body\n */\nfunction post(path, endpoint, requestBody) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`POST URL ${new URL(path, endpoint).href}`);\n logger.debug(`POST body ${JSON.stringify(requestBody)}`);\n if (Buffer.isBuffer(requestBody)) {\n try {\n const requestOptions = {\n method: \"post\",\n body: requestBody,\n headers: {\n Accept: \"application/octet-stream\",\n \"Content-Type\": \"application/octet-stream\",\n },\n };\n const response = yield fetch(new URL(path, endpoint).href, requestOptions);\n return {\n error: null,\n statusCode: response.status,\n rspBody: yield constructBufferPostResponseBody(response),\n };\n }\n catch (error) {\n return { error, statusCode: null, rspBody: null };\n }\n }\n else {\n try {\n const response = yield fetch(new URL(path, endpoint).href, {\n method: \"post\",\n body: JSON.stringify(requestBody),\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n });\n return {\n error: null,\n statusCode: response.status,\n rspBody: yield constructBufferPostResponseBody(response),\n };\n }\n catch (error) {\n return { error, statusCode: null, rspBody: null };\n }\n }\n });\n}\nfunction constructBufferPostResponseBody(response) {\n return __awaiter(this, void 0, void 0, function* () {\n const contentType = response.headers.get(\"content-type\");\n if (contentType === \"application/octet-stream\") {\n const responseBuffer = yield response.arrayBuffer();\n const buffer = Buffer.from(responseBuffer);\n return decodeValue(buffer);\n }\n if (contentType === \"application/json\") {\n return yield response.json();\n }\n const responseText = yield response.text();\n return responseText ? responseText : response.statusText;\n });\n}\n//# sourceMappingURL=httpUtil.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { logger } from \"../..\";\nimport handleRequest from \"./httpUtil\";\nimport { bftMajority, sleep, racePromisesWithTimeout, groupResponses } from \"./restclientutil\";\nconst isSuccessfullRequest = (statusCode) => statusCode >= 200 && statusCode < 300;\nconst hasClientError = (statusCode) => statusCode >= 400 && statusCode < 500;\nconst hasServerError = (statusCode) => statusCode >= 500 && statusCode < 600;\nexport function abortOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statuscode => !hasServerError(statuscode),\n });\n });\n}\nexport function tryNextOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statusCode => !hasClientError(statusCode) && !hasServerError(statusCode),\n });\n });\n}\nexport const errorMessages = {\n NO_CONSENSUS: \"Nodes were not able to reach a consensus\",\n};\nexport function queryMajority({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n // Set up constants\n const bftMajorityThreshold = bftMajority(config.endpointPool.length);\n const failureThreshold = config.endpointPool.length - bftMajorityThreshold + 1;\n const { nodeManager } = config;\n const timeout = 15000;\n const availableNodes = nodeManager.getAvailableNodes();\n // If the available nodes are less than bfthMajorityThreshold, set all nodes as reachable again.\n if (availableNodes.length < bftMajorityThreshold) {\n nodeManager.makeAllNodesAvailable();\n }\n const outcomes = [];\n const promises = nodeManager.getAvailableNodes().map(node => {\n return handleRequest(method, path, node.url, postObject)\n .then(response => {\n const { statusCode } = response;\n if (statusCode && isSuccessfullRequest(statusCode)) {\n outcomes.push({ type: \"SUCCESS\", result: response });\n }\n else {\n if (statusCode && hasServerError(statusCode)) {\n nodeManager.makeNodeUnavailable(node.url);\n }\n outcomes.push({ type: \"FAILURE\", result: response });\n }\n return response;\n })\n .catch((error) => {\n outcomes.push({ type: \"ERROR\", result: error });\n return error;\n });\n });\n let remainingPromises = promises;\n // Wait for the necessary majority of outcomes to come back or for the timeout to be reached, whichever comes first.\n for (let i = 0; i < bftMajorityThreshold; i++) {\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n // Evaluate the outcomes\n const successfullOutcomes = outcomes.filter(outcome => outcome.type === \"SUCCESS\");\n const failureOutcomes = outcomes.filter(outcome => outcome.type === \"FAILURE\");\n const errorOutcomes = outcomes.filter(outcome => outcome.type === \"ERROR\");\n // group all of the same responses together into groups and count each groups size\n const groupedSuccessfullResponses = groupResponses(successfullOutcomes);\n // validate the responses\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // Successfull majority response was found\n if (groupedSuccessfullResponses.maxNumberOfEqualResponses() >= bftMajorityThreshold) {\n if (groupedSuccessfullResponses.numberOfDistinctResponses() > 1) {\n logger.warning(`Got disagreeing responses, but could still reach BFT majority`);\n }\n return groupedSuccessfullResponses.majorityResponse();\n }\n // Too many failures or errors to be able to reach a consensus\n // If the number of failures and errors is greater than the failure threshold, return first failure, if any, otherwise throw the first error.\n if ([...failureOutcomes, ...errorOutcomes].length >= failureThreshold) {\n if (failureOutcomes.length > 0) {\n return failureOutcomes[0].result;\n }\n else {\n throw errorOutcomes[0].result;\n }\n }\n // If all nodes have responded without a majority, throw an error.\n if (outcomes.length >= config.endpointPool.length) {\n throw new Error(errorMessages.NO_CONSENSUS);\n }\n // Wait for more one more response to come back. ( we need to set a timeout here)\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n });\n}\nexport function singleEndpoint({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode, rspBody, error;\n const { nodeManager } = config;\n const endpoint = nodeManager.getNode();\n if (!endpoint) {\n throw new Error(\"Cannot get endpoint. Node not found!\");\n }\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n ({ error, statusCode, rspBody } = yield handleRequest(method, path, endpoint.url, postObject));\n const isError = statusCode ? hasServerError(statusCode) || hasClientError(statusCode) : false;\n if (!isError && !error) {\n return { error, statusCode, rspBody };\n }\n logger.info(`${method} request failed on ${config.endpointPool[0]}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n // TS issue. Variable 'error' is used before being assigned.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return { error, statusCode, rspBody };\n });\n}\nexport function retryRequest({ method, path, config, postObject, validateStatusCode, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode;\n let rspBody;\n let error;\n const { nodeManager } = config;\n for (const endpoint of nodeManager.getAvailableNodes()) {\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n ({ error, statusCode, rspBody } = yield handleRequest(method, path, endpoint.url, postObject));\n const isStatusCodeValid = statusCode ? validateStatusCode(statusCode) : false;\n const isServerError = statusCode ? hasServerError(statusCode) : false;\n if (isStatusCodeValid && !error) {\n // Find a way to have this handled more elegantly in the node manager.\n if (nodeManager.stickedNode !== endpoint) {\n nodeManager.setStickyNode(endpoint);\n }\n return { error, statusCode, rspBody };\n }\n if (isServerError) {\n nodeManager.makeNodeUnavailable(endpoint.url);\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n }\n // TS issue. Variable 'error' is used before being assigned.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return { error, statusCode, rspBody };\n });\n}\n//# sourceMappingURL=failoverStrategies.js.map","import { CustomError } from \"../customError\";\nexport class MissingPubKeyError extends CustomError {\n constructor() {\n super(`No public key was provided`, 400);\n }\n}\nexport class MissingBlockchainIdentifierError extends CustomError {\n constructor() {\n super(`No blockchain identifier was provided. Include either a blockchainRid (string) or a blockchainIid (number).`, 400);\n }\n}\nexport class MissingNodeUrlError extends CustomError {\n constructor() {\n super(`No node url or directory node url was provided. Include either a nodeUrl (string or string[]) or a directory node url (string or string[]).`, 400);\n }\n}\nexport class BlockchainUrlUndefinedException extends CustomError {\n constructor(brid) {\n const idType = typeof brid === \"string\" ? \"BRID\" : \"IID\";\n super(`Cannot find nodes hosting the blockchain with ${idType} ${brid}`, 400);\n }\n}\nexport class DirectoryNodeUrlPoolException extends CustomError {\n constructor() {\n super(`No directory node url was provided`, 400);\n }\n}\nexport class InvalidTransactionFormatException extends CustomError {\n constructor() {\n super(`The transaction is not in the right format`, 400);\n }\n}\nexport class GetTransactionRidException extends CustomError {\n constructor(error) {\n super(`\"Error occurred while getting transaction RID:\", ${error}`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","import { z } from \"zod\";\nexport const BufferSchema = z.union([z.instanceof(Uint8Array), z.instanceof(Buffer)]);\n//# sourceMappingURL=bufferSchema.js.map","import { BufferSchema } from \"./bufferSchema\";\nimport { InvalidTxRidException } from \"../../restclient/errors\";\nexport const TxRidSchema = BufferSchema.refine(x => x.length === 32, \"Rid must be 32 bytes long\");\nexport const isTxRidValid = (rid, options) => {\n const TxRidValidationContext = TxRidSchema.safeParse(rid);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in TxRidValidationContext;\n if (!hasError) {\n return { success: true };\n }\n const validationError = new InvalidTxRidException(rid);\n if (throwOnError) {\n throw validationError;\n }\n return {\n success: false,\n error: TxRidValidationContext.error,\n message: validationError.message,\n };\n};\n//# sourceMappingURL=txRid.js.map","import { z } from \"zod\";\nimport { TxRidSchema } from \"./txRid\";\nexport const AnchoringTransactionSchema = z.object({\n txRid: z.instanceof(Buffer).superRefine((rid, refCtx) => {\n const txRidValidation = TxRidSchema.safeParse(rid);\n if (!txRidValidation.success)\n txRidValidation.error.issues.forEach(issue => refCtx.addIssue(issue));\n }),\n txData: z.instanceof(Buffer).refine(data => data.length > 0, {\n message: \"txData must be a non-empty Buffer\",\n }),\n txOpIndex: z.number().int().nonnegative({ message: \"txOpIndex must be a non-negative integer\" }),\n});\n//# sourceMappingURL=anchoringTransaction.js.map","import { ensureString, toString } from \"../formatter\";\nexport class MissingTransactionProof extends Error {\n constructor(proofHash, fetchedTxHash) {\n super(`Unable to verify source transaction proof,transaction hash in proof ${toString(proofHash)} does not match hash from fetched transaction ${toString(fetchedTxHash)}`);\n }\n}\nexport class DifferentNumberOfSignersException extends Error {\n constructor(length, comparableLength) {\n super(`Transaction signatures amount ${length} do not match expected amount of signers ${comparableLength}`);\n }\n}\nexport class SignatureException extends Error {\n constructor(signer) {\n super(`Expected signer ${toString(signer)} has not signed source transaction`);\n }\n}\nexport class ProofRidException extends Error {\n constructor() {\n super(\"Unable to verify source transaction proof, got a different transaction from query than we asked for\");\n }\n}\nexport class SystemChainException extends Error {\n constructor(errorMessage) {\n super(`Query to system chain failed with error: ${errorMessage}`);\n }\n}\nexport class ConfirmationProofException extends Error {\n constructor(transactionRid) {\n super(`Unable to fetch confirmation proof for transaction RID: ${ensureString(transactionRid)}.`);\n }\n}\nexport class BlockAnchoringException extends Error {\n constructor() {\n super(`Block is not present in cluster anchoring chain`);\n }\n}\n//# sourceMappingURL=error.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { AnchoringTransactionSchema } from \"../blockchainClient/validation/anchoringTransaction\";\nimport { checkDigestSignature } from \"../encryption/encryption\";\nimport { ensureBuffer } from \"../formatter\";\nimport { gtvHash } from \"../gtv\";\nimport { getDigestToSign, rawGtvToGtx } from \"../gtx/gtx\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport { TxRejectedError } from \"../restclient/errors\";\nimport { sleep } from \"../restclient/restclientutil\";\nimport { DifferentNumberOfSignersException, MissingTransactionProof, ProofRidException, SignatureException, SystemChainException, } from \"./error\";\nexport function getClusterOfBlockchain(client, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterName = yield client.query({\n name: \"cm_get_blockchain_cluster\",\n args: { brid: blockchainRid },\n });\n return clusterName;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function getClusterInfo(client, name) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterInfo = yield client.query({\n name: \"cm_get_cluster_info\",\n args: { name },\n });\n return clusterInfo;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function awaitGetAnchoringTransactionForBlockRid(client, blockchainRid, blockRid, systemAnchoringStatusPolling) {\n return __awaiter(this, void 0, void 0, function* () {\n let anchoringTransactionResponse = null;\n for (let i = 0; i < systemAnchoringStatusPolling.count; i++) {\n anchoringTransactionResponse = yield getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid);\n if (anchoringTransactionResponse) {\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(anchoringTransactionResponse);\n if (anchoringTransactionValidaiton.success) {\n return anchoringTransactionValidaiton.data;\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError(\"Invalid anchoring transaction format\");\n }\n }\n yield sleep(systemAnchoringStatusPolling.interval);\n }\n return anchoringTransactionResponse;\n });\n}\nexport function getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const anchoringTxForBlockRid = yield client.query({\n name: \"get_anchoring_transaction_for_block_rid\",\n args: { blockchain_rid: blockchainRid, block_rid: blockRid },\n });\n if (!anchoringTxForBlockRid)\n return null;\n return convertToAnchoringTransaction(anchoringTxForBlockRid);\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function convertToAnchoringTransaction(responseTx) {\n const { tx_rid, tx_data, tx_op_index } = responseTx;\n return {\n txRid: tx_rid,\n txData: tx_data,\n txOpIndex: tx_op_index,\n };\n}\nexport function calculateBlockRID(decodedTxProof, merkleHashVersion) {\n const sourceBlockHeader = decodedTxProof.blockHeader;\n if (!sourceBlockHeader) {\n throw new Error(\"Failed to get blockHeader from confirmation proof\");\n }\n const decodeSourceBlockRid = decodeValue(sourceBlockHeader);\n return gtvHash(decodeSourceBlockRid, merkleHashVersion);\n}\n// fetch tx from txRID and verifies with secp256k1.ecdsaVerify that txRID and signer creates signatures that are on the blockchain transaction\nexport function fetchAndVerifyTransaction(sourceClient, txToProveRID, proofHash, txToProveSigners) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const rawTx = yield sourceClient.getTransaction(txToProveRID);\n const txGtv = decodeValue(rawTx);\n const fetchedTxHash = gtvHash(txGtv, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(fetchedTxHash, proofHash)) {\n // We received another hash for tx RID than what was included in proof\n // Possibly rouge or faulty node(s). Anyway, we need to give up.\n throw new MissingTransactionProof(proofHash, fetchedTxHash);\n }\n const fetchedTx = rawGtvToGtx(txGtv);\n if (txToProveSigners.length != ((_a = fetchedTx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n throw new DifferentNumberOfSignersException((_c = (_b = fetchedTx.signatures) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, txToProveSigners.length);\n }\n const txRID = getDigestToSign(fetchedTx, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(txRID, ensureBuffer(txToProveRID))) {\n throw new ProofRidException();\n }\n for (const signer of txToProveSigners) {\n let hasSignature = false;\n for (const signature of fetchedTx.signatures) {\n // verify that txRID (hash of gtxBody) signed by signers equals the signatures from network\n if (checkDigestSignature(txRID, signer, signature)) {\n hasSignature = true;\n break;\n }\n }\n if (!hasSignature)\n throw new SignatureException(signer);\n }\n return { verifiedTx: fetchedTx, verifiedTxHash: fetchedTxHash };\n });\n}\nexport function composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, anchoringTx, anchoringProof, isNetwork = true) {\n let operationArgs;\n operationArgs = {\n sourceBlockchainRid: ensureBuffer(sourceBlockchainRid),\n transactionHash: verifiedTxHash,\n transactionProof: encodeValue(txProof),\n };\n if (isNetwork) {\n operationArgs = Object.assign(Object.assign({}, operationArgs), { transactionData: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txData, transactionIndex: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txOpIndex, anchoringProof: anchoringProof && encodeValue(anchoringProof) });\n }\n return {\n operations: [\n {\n name: \"iccf_proof\",\n args: Object.values(operationArgs),\n },\n ],\n signers: iccfTxSigners,\n };\n}\n//# sourceMappingURL=utils.js.map","export var FailoverStrategy;\n(function (FailoverStrategy) {\n FailoverStrategy[\"AbortOnError\"] = \"abortOnError\";\n FailoverStrategy[\"TryNextOnError\"] = \"tryNextOnError\";\n FailoverStrategy[\"SingleEndpoint\"] = \"singleEndpoint\";\n FailoverStrategy[\"QueryMajority\"] = \"queryMajority\";\n})(FailoverStrategy || (FailoverStrategy = {}));\nexport var ResponseStatus;\n(function (ResponseStatus) {\n ResponseStatus[\"Confirmed\"] = \"confirmed\";\n ResponseStatus[\"Rejected\"] = \"rejected\";\n ResponseStatus[\"Unknown\"] = \"unknown\";\n ResponseStatus[\"Waiting\"] = \"waiting\";\n})(ResponseStatus || (ResponseStatus = {}));\nexport var TransactionEvent;\n(function (TransactionEvent) {\n TransactionEvent[\"ClusterAnchoringConfirmation\"] = \"clusterAnchoringConfirmed\";\n TransactionEvent[\"SystemAnchoringConfirmation\"] = \"systemAnchoringConfirmed\";\n TransactionEvent[\"DappConfirmed\"] = \"dappConfirmed\";\n TransactionEvent[\"DappReceived\"] = \"dappReceived\";\n TransactionEvent[\"Signed\"] = \"signed\";\n})(TransactionEvent || (TransactionEvent = {}));\nexport var AnchoringStatus;\n(function (AnchoringStatus) {\n AnchoringStatus[\"NotAnchored\"] = \"notAnchored\";\n AnchoringStatus[\"ClusterAnchored\"] = \"clusterAnchored\";\n AnchoringStatus[\"SystemAnchored\"] = \"systemAnchored\";\n AnchoringStatus[\"FailedAnchoring\"] = \"failedAnchoring\";\n})(AnchoringStatus || (AnchoringStatus = {}));\nexport var ChainConfirmationLevel;\n(function (ChainConfirmationLevel) {\n ChainConfirmationLevel[\"None\"] = \"none\";\n ChainConfirmationLevel[\"Dapp\"] = \"dapp\";\n ChainConfirmationLevel[\"ClusterAnchoring\"] = \"clusterAnchoring\";\n ChainConfirmationLevel[\"SystemAnchoring\"] = \"systemAnchoring\";\n ChainConfirmationLevel[\"EvmNetwork\"] = \"evmNetwork\";\n})(ChainConfirmationLevel || (ChainConfirmationLevel = {}));\n//# sourceMappingURL=enums.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createClient } from \"../blockchainClient/blockchainClient\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID, composeProofTransactionObject, fetchAndVerifyTransaction, getClusterInfo, getClusterOfBlockchain, } from \"./utils\";\nimport { toString, toBuffer, ensureString, ensureBuffer } from \"../formatter\";\nimport { BlockAnchoringException, ConfirmationProofException } from \"./error\";\nimport { getUrlsFromEndpoints } from \"../blockchainClient/utils\";\nimport { FailoverStrategy } from \"../blockchainClient/enums\";\n/**\n * Creates an ICCF (Inter-Chain Communication Framework) proof transaction.\n * This function generates a proof that a specific transaction has occurred on the source blockchain\n * and constructs an ICCF proof transaction that can be posted to the target blockchain.\n *\n * @param {IClient} client - The client configured to communicate with the management chain.\n * @param {BufferId} txToProveRid - The RID of the transaction to be proven.\n * @param {Buffer} txToProveHash - The hash of the transaction to be proven.\n * @param {PubKey[]} txToProveSigners - An array of public keys representing signers of the transaction to be proven.\n * @param {BufferId} sourceBlockchainRid - The RID of the source blockchain.\n * @param {BufferId} targetBlockchainRid - The RID of the target blockchain.\n * @param {PubKey[]} iccfTxSigners - An array of public keys representing signers of the ICCF proof transaction (optional, default: []).\n * @param {boolean} forceIntraNetworkIccfOperation - Whether to force the ICCF operation to be performed within the same network (optional, default: false).\n * @param {number} merkleHashVersion - The version of the merkle hash to use.\n * @returns {Promise<IccfProof>} A promise that resolves to an ICCF proof object containing the ICCF proof transaction.\n */\nexport function createIccfProofTx(client, txToProveRid, txToProveHash, txToProveSigners, sourceBlockchainRid, targetBlockchainRid, iccfTxSigners = [], forceIntraNetworkIccfOperation = false, merkleHashVersion) {\n return __awaiter(this, void 0, void 0, function* () {\n const clientConfiguredToSource = yield createClient({\n directoryNodeUrlPool: getUrlsFromEndpoints(client.config.endpointPool),\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n });\n const txProof = yield clientConfiguredToSource.getConfirmationProof(txToProveRid);\n if (!txProof || !txProof.hash) {\n throw new ConfirmationProofException(txToProveRid);\n }\n const proofHash = txProof.hash;\n const { verifiedTx, verifiedTxHash } = !txToProveHash.equals(proofHash)\n ? yield fetchAndVerifyTransaction(clientConfiguredToSource, txToProveRid, proofHash, txToProveSigners)\n : { verifiedTx: null, verifiedTxHash: txToProveHash };\n const sourceCluster = yield getClusterOfBlockchain(client, ensureBuffer(sourceBlockchainRid));\n const targetCluster = yield getClusterOfBlockchain(client, ensureBuffer(targetBlockchainRid));\n if (!forceIntraNetworkIccfOperation && sourceCluster === targetCluster) {\n // intra-cluster\n const intraClusterProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, undefined, undefined, false);\n return { iccfTx: intraClusterProofTx };\n }\n else {\n // intra-network\n const systemClientUsingStickyNode = Object.assign(Object.assign({}, client), { config: Object.assign(Object.assign({}, client.config), { failoverStrategy: FailoverStrategy.SingleEndpoint }) });\n const anchoringClient = yield getAnchoringClient(systemClientUsingStickyNode, sourceBlockchainRid, sourceCluster);\n const clusterAnchoredTx = yield getBlockAnchoringTransaction(clientConfiguredToSource, anchoringClient, undefined, txProof);\n if (!clusterAnchoredTx) {\n throw new BlockAnchoringException();\n }\n const anchoringProof = yield anchoringClient.getConfirmationProof(clusterAnchoredTx.txRid);\n const intraNetworkProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, clusterAnchoredTx, anchoringProof);\n return { iccfTx: intraNetworkProofTx, verifiedTx };\n }\n });\n}\n/**\n * Checks whether a given transaction is included in the cluster anchoring chain and returns the\n * block anchoring transaction. If `txProof` is not provided, it fetches the confirmation proof\n * using the `sourceClient`.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to the anchored transaction response object.\n */\nexport function getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!txRid && !txProof) {\n throw Error(\"Missing a txRid or TxProof\");\n }\n const confirmationProof = txProof !== null && txProof !== void 0 ? txProof : (txRid && (yield sourceClient.getConfirmationProof(txRid)));\n if (!confirmationProof) {\n throw Error(\"Confirmation proof not found\");\n }\n const blockRid = calculateBlockRID(confirmationProof, sourceClient.config.merkleHashVersion);\n const blockchainRid = sourceClient.config.blockchainRid;\n const anchoringTxResponse = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, toBuffer(blockchainRid), blockRid, sourceClient.config.clusterAnchoringStatusPolling);\n return anchoringTxResponse;\n });\n}\n/**\n * Checks whether a given transaction is included in the anchoring blockchain.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to `true` if the transaction is anchored, `false` otherwise.\n */\nexport function isBlockAnchored(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n return !!(yield getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof));\n });\n}\n/**\n * Gets a client configured for the cluster anchoring blockchain of a cluster. Takes a specific\n * cluster name or blockchain RID to determine the cluster.\n * @param client - The client configured to communicate with the management chain.\n * @param dappBlockchainRid - (Optional) The RID of a blockchain which anchoring wants to be checked.\n * @param cluster - (Optional) The cluster of interest.\n * @returns A Promise that resolves to the client configured to a cluster anchoring chain.\n */\nexport function getAnchoringClient(client, dappBlockchainRid, cluster) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dappBlockchainRid && !cluster) {\n throw Error(\"Missing a dapp blockchainRid or cluster name\");\n }\n const sourceCluster = cluster !== null && cluster !== void 0 ? cluster : (dappBlockchainRid && (yield getClusterOfBlockchain(client, ensureBuffer(dappBlockchainRid))));\n if (!sourceCluster) {\n throw Error(\"No cluster could be found\");\n }\n const sourceClusterInfo = yield getClusterInfo(client, sourceCluster);\n if (!sourceClusterInfo || !sourceClusterInfo.anchoring_chain) {\n throw Error(\"Cluster info could not be found\");\n }\n const networkSettings = Object.assign(Object.assign({}, client.config), { directoryNodeUrlPool: getUrlsFromEndpoints(client.config.endpointPool), blockchainRid: toString(sourceClusterInfo.anchoring_chain), merkleHashVersion: 0 });\n const clientConfiguredToAnchoringchain = yield createClient(networkSettings);\n return clientConfiguredToAnchoringchain;\n });\n}\n//# sourceMappingURL=IccfProofTxMaterialBuilder.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nimport { EventEmitter } from \"events\";\nexport class Web3EventEmitter {\n constructor() {\n this._emitter = new EventEmitter();\n }\n on(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.on(eventName, fn);\n }\n once(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.once(eventName, fn);\n }\n off(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.off(eventName, fn);\n }\n emit(eventName, params) {\n this._emitter.emit(eventName, params);\n }\n listenerCount(eventName) {\n return this._emitter.listenerCount(eventName);\n }\n listeners(eventName) {\n return this._emitter.listeners(eventName);\n }\n eventNames() {\n return this._emitter.eventNames();\n }\n removeAllListeners() {\n this._emitter.removeAllListeners();\n }\n setMaxListenerWarningThreshold(maxListenersWarningThreshold) {\n this._emitter.setMaxListeners(maxListenersWarningThreshold);\n }\n getMaxListeners() {\n return this._emitter.getMaxListeners();\n }\n}\n//# sourceMappingURL=promiEventEmitter.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { Web3EventEmitter, } from \"./promiEventEmitter\";\nexport class Web3PromiEvent extends Web3EventEmitter {\n constructor(executor) {\n super();\n // public tag to treat object as promise by different libs\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n this[_a] = \"Promise\";\n this._promise = new Promise(executor);\n }\n then(onfulfilled, onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.then(onfulfilled, onrejected);\n });\n }\n catch(onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.catch(onrejected);\n });\n }\n finally(onfinally) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.finally(onfinally);\n });\n }\n on(eventName, fn) {\n super.on(eventName, fn);\n return this;\n }\n once(eventName, fn) {\n super.once(eventName, fn);\n return this;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=promiEvents.js.map","import { z } from \"zod\";\nconst WRONG_STRING_LENGTH = \"wrong string length\";\nexport const BlockIdentifierSchema = z.union([\n z.string().refine(val => /^[0-9a-fA-F]{64}$/.test(val), WRONG_STRING_LENGTH),\n z.number(),\n]);\nexport const isBlockIdentifierValid = (blockIdentifier, options) => {\n const ctx = BlockIdentifierSchema.safeParse(blockIdentifier);\n const { success } = ctx;\n const hasError = \"error\" in ctx;\n const { throwOnError = false } = options || {};\n if (!hasError) {\n return { success };\n }\n const { error } = ctx;\n const isInvalidInputType = error.issues.some(({ code }) => code === \"invalid_union\");\n const isInvalidStringLength = error.issues.some(({ message }) => message === WRONG_STRING_LENGTH);\n const message = (() => {\n if (isInvalidInputType) {\n return `Invalid \"blockIdentifier\" type. Expected string or number, but received ${typeof blockIdentifier}.`;\n }\n if (isInvalidStringLength) {\n return \"Parameter 'blockIdentifier' does not have the correct format (64-character hexadecimal string).\";\n }\n return error.issues.map(issue => issue.message).join(\", \");\n })();\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success,\n error,\n message: error.issues.map(issue => issue.message).join(\", \"),\n };\n};\n//# sourceMappingURL=blockIdentifier.js.map","import { z } from \"zod\";\nimport { FailoverStrategy } from \"../enums\";\nimport { MissingBlockchainIdentifierError, MissingNodeUrlError } from \"../errors\";\nconst IdentifierSchema = z.union([\n z.object({\n blockchainRid: z.undefined(),\n blockchainIid: z.number(),\n }),\n z.object({\n blockchainRid: z.string(),\n blockchainIid: z.undefined(),\n }),\n]);\nconst NodeUrlSchema = z.union([\n z.object({\n nodeUrlPool: z.union([z.string(), z.array(z.string())]),\n directoryNodeUrlPool: z.undefined(),\n }),\n z.object({\n nodeUrlPool: z.undefined(),\n directoryNodeUrlPool: z.union([z.string(), z.array(z.string())]),\n }),\n]);\nconst RestNetworkSettingsSchema = z.object({\n statusPollingInterval: z.number().optional(),\n statusPollingCount: z.number().optional(),\n failOverConfig: z\n .object({\n strategy: z.nativeEnum(FailoverStrategy).optional(),\n attemptsPerEndpoint: z.number().optional(),\n attemptInterval: z.number().optional(),\n unreachableDuration: z.number().optional(),\n })\n .optional(),\n});\nexport const validateBlockChainIdentifier = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const identifierValidationContext = IdentifierSchema.safeParse(networkSettings);\n if (\"error\" in identifierValidationContext) {\n const missingBlockchainIdentifierError = new MissingBlockchainIdentifierError();\n if (throwOnError) {\n throw missingBlockchainIdentifierError;\n }\n return {\n success: identifierValidationContext.success,\n error: identifierValidationContext.error,\n message: missingBlockchainIdentifierError.message,\n };\n }\n return { success: true };\n};\nconst validateNodeUrl = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const nodeUrlValidationContext = NodeUrlSchema.safeParse(networkSettings);\n if (\"error\" in nodeUrlValidationContext) {\n const missingNodeUrlError = new MissingNodeUrlError();\n if (throwOnError) {\n throw missingNodeUrlError;\n }\n return {\n success: nodeUrlValidationContext.success,\n error: nodeUrlValidationContext.error,\n message: missingNodeUrlError.message,\n };\n }\n return { success: true };\n};\nconst validateRestNetworkSettings = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const restNetworkSettingsValidationContext = RestNetworkSettingsSchema.safeParse(networkSettings);\n if (\"error\" in restNetworkSettingsValidationContext) {\n const { error: { issues }, } = restNetworkSettingsValidationContext;\n const errorMessage = issues.map(({ message, path }) => `${path[0]}: ${message}`).join(\", \");\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n return {\n success: restNetworkSettingsValidationContext.success,\n error: restNetworkSettingsValidationContext.error,\n message: errorMessage,\n };\n }\n return { success: true };\n};\nexport const isNetworkSettingValid = (networkSettings, options) => {\n const identifierValidationContext = validateBlockChainIdentifier(networkSettings, options);\n if (\"error\" in identifierValidationContext) {\n return identifierValidationContext;\n }\n const nodeUrlValidationContext = validateNodeUrl(networkSettings, options);\n if (\"error\" in nodeUrlValidationContext) {\n return nodeUrlValidationContext;\n }\n const restNetworkSettingsValidationContext = validateRestNetworkSettings(networkSettings, options);\n if (\"error\" in restNetworkSettingsValidationContext) {\n return restNetworkSettingsValidationContext;\n }\n return { success: true };\n};\n//# sourceMappingURL=networkSettings.js.map","import { z } from \"zod\";\nimport { BufferSchema } from \"./bufferSchema\";\nconst KeyPairSchema = z.object({\n privKey: BufferSchema,\n pubKey: BufferSchema,\n});\nconst SignatureProviderSchema = z.object({\n pubKey: BufferSchema,\n sign: z.function().args(BufferSchema).returns(z.promise(BufferSchema)),\n});\nexport const SignMethodSchema = z.union([KeyPairSchema, SignatureProviderSchema]);\nexport const isSignMethodValid = (signMethod, options) => {\n const signMethodValidationCtx = SignMethodSchema.safeParse(signMethod);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in signMethodValidationCtx;\n if (!hasError) {\n return { success: true };\n }\n const message = \"Invalid sign method\";\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success: false,\n error: signMethodValidationCtx.error,\n message,\n };\n};\n//# sourceMappingURL=signMethod.js.map","import { z } from \"zod\";\nconst RawGtvSchema = z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.bigint(),\n z.instanceof(Buffer),\n z.array(z.unknown()),\n z.record(z.unknown()),\n]);\nconst DictPairSchema = z.record(RawGtvSchema);\nconst TransactionInfoInBlockResponseSchema = z.object({\n rid: z.string(),\n hash: z.string(),\n data: z.string().optional(),\n});\nconst BlockInfoResponseSchema = z.object({\n rid: z.string(),\n prevBlockRID: z.string(),\n header: z.string(),\n height: z.number(),\n transactions: z.array(TransactionInfoInBlockResponseSchema),\n witness: z.string(),\n witnesses: z.array(z.string()),\n timestamp: z.number(),\n});\nconst TransactionObjectSchema = z.object({\n tx: z.string(),\n});\nconst TransactionsCountSchema = z.object({\n transactionsCount: z.number(),\n});\nconst TransactionConfirmationProofSchema = z.object({\n proof: z.string(),\n});\nconst ConfirmationProofSchema = z.object({\n hash: z.instanceof(Buffer),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n merkleProofTree: RawGtvSchema,\n txIndex: z.number(),\n});\nconst TransactionInfoResponseSchema = z.object({\n blockRID: z.string(),\n blockHeight: z.number(),\n blockHeader: z.string(),\n witness: z.string(),\n timestamp: z.number(),\n txRID: z.string(),\n txHash: z.string(),\n txData: z.string(),\n});\nconst TransactionInfoSchema = z.object({\n blockRid: z.instanceof(Buffer),\n blockHeight: z.number(),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n timestamp: z.number(),\n txRid: z.instanceof(Buffer),\n txHash: z.instanceof(Buffer),\n txData: z.instanceof(Buffer),\n});\nexport function isString(value) {\n const result = z.string().safeParse(value);\n return result.success ? value : null;\n}\nexport function isDictPair(value) {\n const result = DictPairSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRawGtv(value) {\n const result = RawGtvSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponse(value) {\n const result = TransactionInfoInBlockResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponseArray(value) {\n const result = z.array(TransactionInfoInBlockResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponse(value) {\n const result = BlockInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponseArray(value) {\n const result = z.array(BlockInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransaction(value) {\n const result = TransactionObjectSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionsCount(value) {\n const result = TransactionsCountSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionConfirmationProof(value) {\n const result = TransactionConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isConfirmationProof(value) {\n const result = ConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponse(value) {\n const result = TransactionInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponseArray(value) {\n const result = z.array(TransactionInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfo(value) {\n const result = TransactionInfoSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoArray(value) {\n const result = z.array(TransactionInfoSchema).safeParse(value);\n return result.success ? value : null;\n}\n//# sourceMappingURL=requests.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { randomBytes } from \"crypto\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { getBlockAnchoringTransaction } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport * as logger from \"../logger\";\nimport { toBuffer, toString, toQueryObjectGTV, ensureString, ensureBuffer } from \"../formatter\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport { handleGetResponse, handlePostResponse } from \"../restclient/restclient\";\nimport { requestWithFailoverStrategy } from \"../restclient/restclientutil\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { callbackPromiseBuilder, formatBlockInfoResponse, formatTransactionInfoResponse, getClientConfigFromSettings, getGTXFromBufferOrTransactionOrOperation, getSerializedGTX, handlePostResponsePromisified, handleSystemConfirmations, isKeyPair, getAnchoringClientAndSystemChainRid, getSystemAnchoringTransaction, linkPromiEvents, handleDappConfirmations, getMerkleHashVersionFromDapp, } from \"./utils\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { NumberOfSignersAndSignaturesException } from \"../gtx/errors\";\nimport { GetTransactionRidException } from \"./errors\";\nimport { Method } from \"../restclient/enums\";\nimport { ResponseStatus, ChainConfirmationLevel, AnchoringStatus, TransactionEvent } from \"./enums\";\nimport { isBlockIdentifierValid } from \"./validation/blockIdentifier\";\nimport { isNetworkSettingValid } from \"./validation/networkSettings\";\nimport { isSignMethodValid } from \"./validation/signMethod\";\nimport { isTxRidValid } from \"./validation/txRid\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { isBlockInfoResponse, isBlockInfoResponseArray, isRawGtv, isTransaction, isTransactionConfirmationProof, isTransactionInfoResponse, isTransactionInfoResponseArray, isTransactionsCount, } from \"./validation/requests\";\nimport { awaitGetAnchoringTransactionForBlockRid } from \"../ICCF/utils\";\nexport function createClient(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n isNetworkSettingValid(settings, { throwOnError: true });\n const config = yield getClientConfigFromSettings(settings);\n config.merkleHashVersion = yield getMerkleHashVersion(settings);\n return {\n config,\n query(nameOrQueryObject, args, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let _name, _args;\n if (typeof nameOrQueryObject === \"string\") {\n _name = nameOrQueryObject;\n _args = args;\n }\n else {\n _name = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.name;\n _args = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.args;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `query_gtv/${config.blockchainRid}`, config, encodeValue(toQueryObjectGTV(_name, _args)));\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n signTransaction(transaction, signMethod, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Signing transaction with ${!isKeyPair(signMethod) ? \"signature provider containing \" : \"\"}pubKey: ${toString(signMethod.pubKey)}`);\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n try {\n const signedTx = yield (isKeyPair(signMethod)\n ? gtxTool.sign(gtx, signMethod.privKey, config.merkleHashVersion, signMethod.pubKey)\n : gtxTool.sign(gtx, signMethod, config.merkleHashVersion));\n const gtxBytes = getSerializedGTX(signedTx);\n if (typeof callback === \"function\") {\n callback(null, gtxBytes);\n }\n return gtxBytes;\n }\n catch (error) {\n if (typeof callback === \"function\") {\n callback(error, null);\n }\n throw new Error(error);\n }\n });\n },\n sendTransaction(transaction, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n try {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n if (gtx.signers.length !== ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n reject(new NumberOfSignersAndSignaturesException());\n }\n const gtxBytes = getSerializedGTX(gtx);\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `tx/${config.blockchainRid}`, config, gtxBytes);\n const transactionRid = gtxTool.getDigestToSign(gtx, config.merkleHashVersion);\n try {\n yield handlePostResponsePromisified(error, statusCode, rspBody);\n if (typeof callback === \"function\") {\n callback(null, {\n status: ResponseStatus.Waiting,\n statusCode,\n transactionRid: transactionRid,\n });\n }\n }\n catch (_error) {\n if (typeof callback === \"function\") {\n callback(_error, null);\n }\n return reject(_error);\n }\n const client = this;\n const statusPollingConfig = {\n dappStatusPolling: config.dappStatusPolling,\n clusterAnchoringStatusPolling: config.clusterAnchoringStatusPolling,\n systemAnchoringStatusPolling: config.systemAnchoringStatusPolling,\n };\n let transactionReceipt = yield handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, statusCode, promiEvent, config.dappStatusPolling, () => client.getTransactionStatus(transactionRid, callback));\n if (confirmationLevel === ChainConfirmationLevel.None ||\n confirmationLevel === ChainConfirmationLevel.Dapp) {\n resolve(transactionReceipt);\n }\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n transactionReceipt = yield handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBridString, () => client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback), anchoredTxRid => client.getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainBridString, callback));\n resolve(transactionReceipt);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n }));\n return promiEvent;\n },\n signAndSendUniqueTransaction(transactionOrOperation, signMethod, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n isSignMethodValid(signMethod, { throwOnError: true });\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const transaction = \"name\" in transactionOrOperation\n ? {\n operations: [transactionOrOperation],\n signers: [signMethod.pubKey],\n }\n : transactionOrOperation;\n const hasNop = transaction.operations.some(operation => {\n return operation.name === \"nop\";\n });\n const transactionWithNop = hasNop ? transaction : client.addNop(transaction);\n try {\n const signedTx = yield client.signTransaction(transactionWithNop, signMethod);\n promiEvent.emit(TransactionEvent.Signed, signedTx);\n const sendTransactionPromiEvent = client.sendTransaction(signedTx, doStatusPolling, callback, confirmationLevel);\n linkPromiEvents(sendTransactionPromiEvent, promiEvent);\n resolve(yield sendTransactionPromiEvent);\n }\n catch (error) {\n reject(error);\n }\n }));\n return promiEvent;\n },\n getTransaction(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transaction = isTransaction(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionStatus(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${transactionRid.toString(\"hex\")}/status`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n addNop(transaction) {\n const _transaction = cloneDeep(transaction);\n const noOperation = {\n name: \"nop\",\n args: [randomBytes(32)],\n };\n _transaction.operations = [..._transaction.operations, noOperation];\n return _transaction;\n },\n getTransactionRid(transaction) {\n try {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n return gtxTool.getDigestToSign(gtx, config.merkleHashVersion);\n }\n catch (e) {\n throw new GetTransactionRidException(e);\n }\n },\n getTransactionsInfo(limit = 25, beforeTime, callback, afterTime, signerPubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const beforeTimeQueryParam = beforeTime ? `&before-time=${beforeTime.getTime()}` : \"\";\n const afterTimeQueryParam = afterTime ? `&after-time=${afterTime.getTime()}` : \"\";\n const signerQueryParam = signerPubKey ? `&signer=${signerPubKey}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}?limit=${limit}${beforeTimeQueryParam}${afterTimeQueryParam}${signerQueryParam}`, config);\n const transactionsInfoResponseArray = isTransactionInfoResponseArray(rspBody);\n const body = statusCode === 200 && transactionsInfoResponseArray\n ? transactionsInfoResponseArray.map(formatTransactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionInfo(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transactionInfoResponse = isTransactionInfoResponse(rspBody);\n const body = statusCode === 200 && transactionInfoResponse\n ? formatTransactionInfoResponse(transactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getAnchoringStatusForBlockRid(blockRid, anchoringClient, systemAnchoringChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const result = { status: AnchoringStatus.NotAnchored };\n const clusterAnchoredTx = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, ensureBuffer(client.config.blockchainRid), ensureBuffer(blockRid), config.clusterAnchoringStatusPolling);\n if (!clusterAnchoredTx) {\n return result;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoredTx);\n if (!anchoringTransactionValidation.success) {\n return result;\n }\n result.status = AnchoringStatus.ClusterAnchored;\n result.clusterAnchoredTx = anchoringTransactionValidation.data;\n const systemAnchoredTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n if (!systemAnchoredTransaction) {\n return result;\n }\n result.status = AnchoringStatus.SystemAnchored;\n result.systemAnchoredTx = systemAnchoredTransaction;\n return result;\n });\n },\n getTransactionConfirmationLevel(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const client = this;\n const dappConfirmation = yield client.getTransactionStatus(transactionRid);\n const response = {\n status: dappConfirmation.status,\n statusCode: 200,\n transactionRid: ensureBuffer(transactionRid),\n };\n if (dappConfirmation.status === ResponseStatus.Waiting) {\n return response;\n }\n let clusterAnchoringResult = null;\n if (dappConfirmation.status === ResponseStatus.Confirmed) {\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n clusterAnchoringResult = yield client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient);\n if (clusterAnchoringResult === AnchoringStatus.NotAnchored || !clusterAnchoringResult) {\n return response;\n }\n if (clusterAnchoringResult === AnchoringStatus.FailedAnchoring) {\n response.status = AnchoringStatus.FailedAnchoring;\n response.statusCode = 400;\n return response;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoringResult);\n if (!anchoringTransactionValidation.success) {\n return response;\n }\n if (anchoringTransactionValidation.success) {\n response.status = AnchoringStatus.ClusterAnchored;\n response.statusCode = 200;\n response.clusterAnchoredTx = anchoringTransactionValidation.data;\n response.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n const systemAnchoringResult = yield client.getSystemAnchoringTransactionConfirmation(anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainBridString);\n if (!systemAnchoringResult) {\n return response;\n }\n response.status = AnchoringStatus.SystemAnchored;\n response.systemAnchoredTx = systemAnchoringResult;\n response.systemAnchoringClientBrid = systemAnchoringChainBridString;\n return response;\n }\n }\n return response;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n });\n },\n getTransactionCount(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/count`, config, undefined, true);\n const transactionsCount = isTransactionsCount(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? transactionsCount === null || transactionsCount === void 0 ? void 0 : transactionsCount.transactionsCount : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlockInfo(blockIdentifier, txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n isBlockIdentifierValid(blockIdentifier, { throwOnError: true });\n const queryString = typeof blockIdentifier === \"string\" ? blockIdentifier : `height/${blockIdentifier}`;\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}/${queryString}?txs=${txs}`, config);\n const blockInfoResponse = isBlockInfoResponse(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponse !== null && blockInfoResponse\n ? formatBlockInfoResponse(blockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getLatestBlock(txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const shouldIncludeFullTransaction = txs ? `&txs=${txs}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?limit=1${shouldIncludeFullTransaction}`, config, undefined, true);\n const indexOfLatestBlock = 0;\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray !== null && blockInfoResponseArray\n ? formatBlockInfoResponse(blockInfoResponseArray[indexOfLatestBlock])\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlocks({ limit, beforeTime, afterTime, beforeHeight, afterHeight, txs, callback }) {\n return __awaiter(this, void 0, void 0, function* () {\n const searchValues = {\n limit,\n txs,\n \"before-time\": beforeTime,\n \"after-time\": afterTime,\n \"before-height\": beforeHeight,\n \"after-height\": afterHeight,\n };\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(searchValues)) {\n if (value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?${searchParams}`, config);\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray\n ? blockInfoResponseArray.map(formatBlockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlocksInfo(limit = 25, beforeTime, beforeHeight, txs, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let filteringQueryParam = \"\";\n if (beforeTime) {\n filteringQueryParam = `&before-time=${beforeTime.getTime()}`;\n }\n else if (beforeHeight) {\n filteringQueryParam = `&before-height=${beforeHeight}`;\n }\n const shouldIncludeFullTransaction = txs ? `&txs=${txs}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?limit=${limit}${filteringQueryParam}${shouldIncludeFullTransaction}`, config);\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray\n ? blockInfoResponseArray.map(formatBlockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n encodeTransaction(transaction) {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n return gtxTool.serialize(gtx);\n },\n decodeTransactionToGtx(encodedTransaction) {\n const gtx = gtxTool.deserialize(encodedTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${JSON.stringify(gtx)}`);\n return gtx;\n },\n getClientNodeUrlPool() {\n return config.endpointPool.map((endpoint) => endpoint.url);\n },\n /**\n * Retrieves a confirmation proof for a transaction with the specified sha256\n * hash.\n * @param txRid A buffer of 32 bytes\n * @param callback parameters (error, responseObjectProof) if first\n * parameter is not null, an error occurred.\n * If first parameter is null, then the second parameter is an object\n * like the following:\n *\n * {hash: messageHashBuffer,\n * blockHeader: blockHeaderBuffer,\n * signatures: [{pubKey: pubKeyBuffer, signature: sigBuffer}, ...],\n * merklePath: [{side: <0|1>, hash: <hash buffer level n-1>},\n * ...\n * {side: <0|1>, hash: <hash buffer level 1>}]}\n *\n * If no such transaction RID exists, the callback will be called with (null, null).\n *\n * The proof object can be validated using\n * postchain-common.util.validateMerklePath(proof.merklePath, proof.hash,\n * proof.blockHeader.slice(32, 64))\n *\n * The signatures must be validated agains some know trusted source for valid signers\n * at this specific block height.\n */\n getConfirmationProof(txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(txRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(txRid)}/confirmationProof`, config);\n const confirmationProof = {\n merkleProofTree: \"\",\n txIndex: 0,\n };\n if (statusCode === 200) {\n try {\n const transactionConfirmationProof = isTransactionConfirmationProof(rspBody);\n if (!transactionConfirmationProof) {\n throw error;\n }\n const decodedProof = decodeValue(toBuffer(transactionConfirmationProof.proof));\n confirmationProof.txIndex = decodedProof.txIndex;\n confirmationProof.hash = decodedProof.hash;\n confirmationProof.blockHeader = decodedProof.blockHeader;\n confirmationProof.witness = decodedProof.witness;\n confirmationProof.merkleProofTree = decodedProof.merkleProofTree;\n }\n catch (decodeError) {\n if (callback) {\n callback(decodeError, null);\n }\n throw decodeError;\n }\n }\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? confirmationProof : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const client = this;\n try {\n let confirmationProof;\n try {\n confirmationProof = yield client.getConfirmationProof(transactionRid);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.NotAnchored;\n }\n const anchoringTransaction = yield getBlockAnchoringTransaction(client, anchoringClient, transactionRid, confirmationProof);\n if (!anchoringTransaction)\n return AnchoringStatus.NotAnchored;\n return anchoringTransaction;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.FailedAnchoring;\n }\n });\n },\n getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(anchoredTxRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const systemAnchoringTransactionTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n return systemAnchoringTransactionTransaction;\n });\n },\n /**\n * Get app structure. Returns list of app modules in JSON format\n * @param callback - leverages error-first pattern and called when promise resolves\n */\n getAppStructure(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/query/${config.blockchainRid}?type=rell.get_app_structure`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n };\n function getMerkleHashVersion(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n let merkleHashVersion;\n if (settings.merkleHashVersion !== undefined) {\n merkleHashVersion = settings.merkleHashVersion;\n }\n else {\n merkleHashVersion = yield getMerkleHashVersionFromDapp(config);\n }\n return merkleHashVersion;\n });\n }\n });\n}\n//# sourceMappingURL=blockchainClient.js.map","const shuffleArray = (array) => {\n const shuffledArray = [...array];\n for (let i = shuffledArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];\n }\n return shuffledArray;\n};\nexport const createNodeManager = ({ nodeUrls, useStickyNode = false, unavailableDuration = 5000, }) => {\n const nodes = nodeUrls.map(url => ({\n url,\n whenAvailable: 0,\n isAvailable: true,\n }));\n return {\n nodes,\n stickedNode: null,\n getAvailableNodes() {\n const shuffledAvailableNodes = shuffleArray(this.nodes.filter((node) => node.isAvailable));\n // set sticky node as the first node, and then shuffle the rest\n if (useStickyNode && this.stickedNode && this.stickedNode.isAvailable) {\n const nodesWithoutSticky = shuffledAvailableNodes.filter(node => node !== this.stickedNode);\n return [this.stickedNode, ...nodesWithoutSticky];\n }\n return shuffledAvailableNodes;\n },\n setStickyNode(node) {\n this.stickedNode = node;\n },\n getNode() {\n const nodes = this.getAvailableNodes();\n if (nodes.length === 0) {\n return null;\n }\n const index = Math.floor(Math.random() * nodes.length);\n const node = nodes[index];\n if (!useStickyNode) {\n return node;\n }\n if (!this.stickedNode) {\n this.setStickyNode(node);\n return node;\n }\n return this.stickedNode;\n },\n makeAllNodesAvailable() {\n this.nodes = this.nodes.map((node) => {\n return Object.assign(Object.assign({}, node), { isAvailable: true, whenAvailable: 0 });\n });\n },\n makeNodeUnavailable(nodeUrl) {\n if (this.stickedNode && this.stickedNode.url === nodeUrl) {\n this.stickedNode = null;\n }\n const updatedNodes = this.nodes.map((node) => {\n if (node.url === nodeUrl) {\n return Object.assign(Object.assign({}, node), { isAvailable: false, whenAvailable: Date.now() + unavailableDuration });\n }\n return node;\n });\n this.nodes = updatedNodes;\n },\n };\n};\n//# sourceMappingURL=nodeManager.js.map","import { z } from \"zod\";\nconst MerkleHashSchema = z.object({\n merkle_hash_version: z.number().int().positive(),\n});\nexport const validateMerkleHash = (data) => {\n const result = MerkleHashSchema.safeParse(data);\n if (!result.success) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\");\n return { merkle_hash_version: 1 };\n }\n return result.data;\n};\n//# sourceMappingURL=merkleHash.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as logger from \"../logger\";\nimport { SerializedTransactionFormatException, InvalidTxRidException, TxRejectedError, } from \"../restclient/errors\";\nimport { handlePostResponse } from \"../restclient/restclient\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { BlockchainUrlUndefinedException, DirectoryNodeUrlPoolException, InvalidTransactionFormatException, MissingBlockchainIdentifierError, } from \"./errors\";\nimport { getBlockchainRidFromIid, requestWithFailoverStrategy, sleep } from \"../restclient/restclientutil\";\nimport { ensureBuffer, toBuffer } from \"../formatter\";\nimport { createClient } from \"./blockchainClient\";\nimport { AnchoringStatus, ChainConfirmationLevel, FailoverStrategy, ResponseStatus, TransactionEvent, } from \"./enums\";\nimport { createNodeManager } from \"../restclient/nodeManager\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { SystemChainException } from \"../ICCF/error\";\nimport { getAnchoringClient } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID } from \"../ICCF/utils\";\nimport { Method } from \"../restclient/enums\";\nimport { validateMerkleHash } from \"./validation/merkleHash\";\nexport function getClientConfigFromSettings(settings) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n return __awaiter(this, void 0, void 0, function* () {\n const nodeUrlPoolToUse = yield getNodeUrlsFromSettings(settings);\n if (nodeUrlPoolToUse.length === 0) {\n const id = (_b = (_a = settings.blockchainRid) !== null && _a !== void 0 ? _a : settings.blockchainIid) !== null && _b !== void 0 ? _b : \"Unknown\";\n throw new BlockchainUrlUndefinedException(id);\n }\n const endpointPool = createEndpointObjects(nodeUrlPoolToUse);\n const nodeManager = createNodeManager({\n nodeUrls: nodeUrlPoolToUse,\n useStickyNode: (_c = settings.useStickyNode) !== null && _c !== void 0 ? _c : false,\n unavailableDuration: (_d = settings.failOverConfig) === null || _d === void 0 ? void 0 : _d.unreachableDuration,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _k;\n if (settings.blockchainRid) {\n return settings.blockchainRid;\n }\n if (settings.blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: settings.blockchainIid,\n merkleHashVersion: (_k = settings.merkleHashVersion) !== null && _k !== void 0 ? _k : 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const directoryChainRid = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _l;\n if (settings.directoryChainRid) {\n return settings.directoryChainRid;\n }\n const directoryChainIid = 0;\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: directoryChainIid,\n merkleHashVersion: (_l = settings.merkleHashVersion) !== null && _l !== void 0 ? _l : 0,\n });\n }))();\n return {\n endpointPool,\n nodeManager: nodeManager,\n blockchainRid: blockchainRidToUse,\n merkleHashVersion: (_e = settings.merkleHashVersion) !== null && _e !== void 0 ? _e : 0,\n dappStatusPolling: setStatusPolling(settings.dappStatusPolling),\n clusterAnchoringStatusPolling: setStatusPolling(settings.clusterAnchoringStatusPolling),\n systemAnchoringStatusPolling: setStatusPolling(settings.systemAnchoringStatusPolling),\n failoverStrategy: ((_f = settings.failOverConfig) === null || _f === void 0 ? void 0 : _f.strategy) || defaultFailoverConfig.strategy,\n attemptsPerEndpoint: ((_g = settings.failOverConfig) === null || _g === void 0 ? void 0 : _g.attemptsPerEndpoint) || defaultFailoverConfig.attemptsPerEndpoint,\n attemptInterval: ((_h = settings.failOverConfig) === null || _h === void 0 ? void 0 : _h.attemptInterval) || defaultFailoverConfig.attemptInterval,\n unreachableDuration: ((_j = settings.failOverConfig) === null || _j === void 0 ? void 0 : _j.unreachableDuration) || defaultFailoverConfig.unreachableDuration,\n directoryChainRid: settings.directoryChainRid || directoryChainRid,\n };\n });\n}\nexport function getMerkleHashVersionFromDapp(config) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield requestWithFailoverStrategy(Method.GET, `/config/${config.blockchainRid}/features`, config);\n const validatedResponse = validateMerkleHash(response.rspBody);\n return validatedResponse.merkle_hash_version;\n }\n catch (error) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\", error);\n return 1;\n }\n });\n}\nexport function validTxRid(txRID) {\n if (txRID.length != 32) {\n const error = new InvalidTxRidException(txRID);\n logger.error(error.toString());\n return false;\n }\n return true;\n}\nexport function nodeDiscovery({ nodeManager, directoryEndpointPool, failOverConfig, blockchainRid, blockchainIid, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (directoryEndpointPool.length === 0) {\n throw new DirectoryNodeUrlPoolException();\n }\n if (!blockchainRid && blockchainIid === undefined) {\n throw new MissingBlockchainIdentifierError();\n }\n const directoryIid = 0;\n const directoryBRID = yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: directoryIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n if (blockchainRid) {\n return blockchainRid;\n }\n if (blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: blockchainIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const queryObject = {\n name: \"cm_get_blockchain_api_urls\",\n args: { blockchain_rid: toBuffer(blockchainRidToUse) },\n };\n const D1Client = yield createClient({\n nodeUrlPool: getUrlsFromEndpoints(directoryEndpointPool),\n blockchainRid: directoryBRID,\n merkleHashVersion: 0,\n });\n const baseUrls = yield D1Client.query(queryObject);\n return baseUrls;\n });\n}\nexport function convertToRellOperation(operations) {\n return operations.map(operation => {\n var _a;\n return {\n opName: operation.name,\n args: (_a = operation.args) !== null && _a !== void 0 ? _a : [],\n };\n });\n}\nexport function getSerializedGTX(gtx) {\n const gtxBytes = gtxTool.serialize(gtx);\n if (!Buffer.isBuffer(gtxBytes)) {\n throw new SerializedTransactionFormatException();\n }\n return gtxBytes;\n}\nexport function getGTXFromBufferOrTransactionOrOperation(transaction, blockchainRid) {\n if (Buffer.isBuffer(transaction)) {\n return gtxTool.deserialize(transaction);\n }\n else if (\"operations\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation(transaction.operations),\n signers: transaction.signers,\n signatures: [],\n };\n }\n else if (\"name\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation([transaction]),\n signers: [],\n signatures: [],\n };\n }\n else {\n throw new InvalidTransactionFormatException();\n }\n}\nexport const callbackPromiseBuilder = (reject, resolve, callback) => {\n return (error, result) => {\n if (error) {\n if (typeof callback === \"function\") {\n callback(error, null);\n }\n reject(error);\n }\n else {\n if (typeof callback === \"function\") {\n callback(null, result);\n }\n resolve(result);\n }\n };\n};\nexport const handlePostResponsePromisified = (error, statusCode, rspBody) => {\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, rspBody, _error => {\n if (_error) {\n reject(_error);\n }\n else {\n resolve();\n }\n });\n });\n};\nfunction ensureArray(input) {\n if (typeof input === \"string\") {\n return [input];\n }\n return input;\n}\nexport const formatTransactionInfoResponse = (transactionInfoResponse) => {\n return {\n blockRid: toBuffer(transactionInfoResponse.blockRID),\n blockHeight: transactionInfoResponse.blockHeight,\n blockHeader: toBuffer(transactionInfoResponse.blockHeader),\n witness: toBuffer(transactionInfoResponse.witness),\n timestamp: transactionInfoResponse.timestamp,\n txRid: toBuffer(transactionInfoResponse.txRID),\n txHash: toBuffer(transactionInfoResponse.txHash),\n txData: toBuffer(transactionInfoResponse.txData),\n };\n};\nexport const formatBlockInfoResponse = (blockInfoResponse) => {\n return {\n rid: toBuffer(blockInfoResponse.rid),\n prevBlockRid: toBuffer(blockInfoResponse.prevBlockRID),\n header: toBuffer(blockInfoResponse.header),\n transactions: blockInfoResponse.transactions.map(formatTransaction),\n height: blockInfoResponse.height,\n witness: toBuffer(blockInfoResponse.witness),\n witnesses: blockInfoResponse.witnesses.map(witness => {\n return toBuffer(witness);\n }),\n timestamp: blockInfoResponse.timestamp,\n };\n};\nconst formatTransaction = (transaction) => {\n const formattedTransaction = {\n rid: toBuffer(transaction.rid),\n hash: toBuffer(transaction.hash),\n };\n if (transaction.data !== undefined) {\n formattedTransaction.data = toBuffer(transaction.data);\n }\n return formattedTransaction;\n};\nexport const isKeyPair = (keypair) => {\n return (typeof keypair === \"object\" &&\n keypair !== null &&\n \"privKey\" in keypair &&\n \"pubKey\" in keypair &&\n keypair.privKey instanceof Buffer &&\n keypair.pubKey instanceof Buffer);\n};\nfunction getNodeUrlsFromSettings(settings) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (settings.directoryNodeUrlPool) {\n // If directoryNodeUrlPool is provided, use nodeDiscovery\n const nodeManager = createNodeManager({\n nodeUrls: ensureArray(settings.directoryNodeUrlPool),\n unavailableDuration: (_a = settings.failOverConfig) === null || _a === void 0 ? void 0 : _a.unreachableDuration,\n });\n return yield nodeDiscovery({\n nodeManager,\n directoryEndpointPool: createEndpointObjects(ensureArray(settings.directoryNodeUrlPool)),\n failOverConfig: settings.failOverConfig,\n blockchainRid: settings.blockchainRid,\n blockchainIid: settings.blockchainIid,\n });\n }\n else if (typeof settings.nodeUrlPool === \"string\") {\n // If nodeUrlPool is a string, convert it to an array\n return [settings.nodeUrlPool];\n }\n else if (Array.isArray(settings.nodeUrlPool)) {\n // If nodeUrlPool is already an array, use it as-is\n return settings.nodeUrlPool;\n }\n else {\n // Default to an empty array if no valid configuration is provided\n return [];\n }\n });\n}\nexport function getSystemClient(directoryNodeUrlPool, directoryChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield createClient({\n directoryNodeUrlPool,\n blockchainRid: directoryChainRid,\n merkleHashVersion: 0,\n });\n });\n}\nexport function getSystemAnchoringChain(directoryClient) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const queryObject = {\n name: \"cm_get_system_anchoring_chain\",\n };\n const systemAnchoringChain = yield directoryClient.query(queryObject);\n if (!systemAnchoringChain) {\n throw new SystemChainException(\"Directory chain client must be provided.\");\n }\n return systemAnchoringChain;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport const defaultFailoverConfig = {\n strategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 500,\n unreachableDuration: 30000,\n};\nexport const createEndpointObjects = (endpointPoolUrls) => {\n const endpoints = endpointPoolUrls.map(endpointUrl => {\n return { url: endpointUrl, whenAvailable: 0 };\n });\n return endpoints;\n};\nexport const getUrlsFromEndpoints = (endpointPool) => {\n return endpointPool.map(endpoint => endpoint.url);\n};\nexport function awaitDappConfirmation(txRID, dappStatusPolling, getTransactionStatus) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let lastKnownResult;\n for (let i = 0; i < dappStatusPolling.count; i++) {\n lastKnownResult = yield getTransactionStatus(txRID);\n if (lastKnownResult.status === ResponseStatus.Confirmed) {\n return ResponseStatus.Confirmed;\n }\n else if (lastKnownResult.status === ResponseStatus.Rejected) {\n throw new TxRejectedError((_a = lastKnownResult.rejectReason) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(dappStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return lastKnownResult.status;\n });\n}\nexport function awaitClusterAnchoringChainConfirmation(txRID, clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let clusterAnchoringConfirmation;\n for (let i = 0; i < clusterAnchoringStatusPolling.count; i++) {\n clusterAnchoringConfirmation = yield getClusterAnchoringTransactionConfirmation(txRID);\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(clusterAnchoringConfirmation);\n if (anchoringTransactionValidaiton.success) {\n return {\n status: AnchoringStatus.ClusterAnchored,\n clusterAnchoredTx: anchoringTransactionValidaiton.data,\n };\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError((_a = AnchoringStatus.FailedAnchoring) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(clusterAnchoringStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return clusterAnchoringConfirmation;\n });\n}\nexport function handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, statusCode, promiEvent, dappStatusPolling, getTransactionStatus) {\n return __awaiter(this, void 0, void 0, function* () {\n const transactionReceipt = {\n status: ResponseStatus.Waiting,\n statusCode: statusCode,\n transactionRid: transactionRid,\n };\n promiEvent.emit(TransactionEvent.DappReceived, transactionReceipt);\n if (doStatusPolling === false || confirmationLevel === ChainConfirmationLevel.None) {\n return transactionReceipt;\n }\n const dappConfirmationStatus = yield awaitDappConfirmation(transactionRid, dappStatusPolling, getTransactionStatus);\n transactionReceipt.status = dappConfirmationStatus;\n promiEvent.emit(TransactionEvent.DappConfirmed, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.Dapp) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBrid, getClusterAnchoringTransactionConfirmation, getSystemAnchoringTransactionConfirmation) {\n return __awaiter(this, void 0, void 0, function* () {\n const clusterAnchoringChainConfirmation = yield awaitClusterAnchoringChainConfirmation(transactionReceipt.transactionRid, statusPollingConfig.clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation);\n transactionReceipt.status = clusterAnchoringChainConfirmation.status;\n transactionReceipt.clusterAnchoredTx = clusterAnchoringChainConfirmation.clusterAnchoredTx;\n transactionReceipt.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n promiEvent.emit(TransactionEvent.ClusterAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.ClusterAnchoring) {\n return transactionReceipt;\n }\n const systemAnchoringConfirmation = yield getSystemAnchoringTransactionConfirmation(clusterAnchoringChainConfirmation.clusterAnchoredTx.txRid, anchoringClient, systemAnchoringChainBrid);\n if (!systemAnchoringConfirmation) {\n return transactionReceipt;\n }\n transactionReceipt.status = AnchoringStatus.SystemAnchored;\n transactionReceipt.systemAnchoredTx = systemAnchoringConfirmation;\n transactionReceipt.systemAnchoringClientBrid = systemAnchoringChainBrid;\n promiEvent.emit(TransactionEvent.SystemAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.SystemAnchoring) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function getAnchoringClientAndSystemChainRid(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const directoryClient = yield getSystemClient(getUrlsFromEndpoints(client.config.endpointPool), client.config.directoryChainRid);\n const anchoringClient = yield getAnchoringClient(directoryClient, client.config.blockchainRid);\n const systemAnchoringChainRidBuffer = yield getSystemAnchoringChain(directoryClient);\n const systemAnchoringChainBridString = systemAnchoringChainRidBuffer.toString(\"hex\");\n return { anchoringClient, systemAnchoringChainBridString };\n });\n}\nexport function getSystemAnchoringTransaction(dappClientEndpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, systemAnchoringStatusPolling, merkleHashVersion) {\n return __awaiter(this, void 0, void 0, function* () {\n const systemAnchoringChainClient = yield getSystemClient(getUrlsFromEndpoints(dappClientEndpointPool), systemAnchoringChainRid);\n const clusterAnchoringProof = yield anchoringClient.getConfirmationProof(anchoredTxRid);\n const clusterBlockRid = calculateBlockRID(clusterAnchoringProof, merkleHashVersion);\n const systemAnchoringTransactionConfirmation = yield awaitGetAnchoringTransactionForBlockRid(systemAnchoringChainClient, toBuffer(anchoringClient.config.blockchainRid), clusterBlockRid, systemAnchoringStatusPolling);\n const systemAnchoringTransactionValidation = AnchoringTransactionSchema.safeParse(systemAnchoringTransactionConfirmation);\n if (!systemAnchoringTransactionValidation.success) {\n return null;\n }\n return systemAnchoringTransactionValidation.data;\n });\n}\nexport function setStatusPolling(statusPolling) {\n var _a, _b;\n return {\n interval: (_a = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.interval) !== null && _a !== void 0 ? _a : 500,\n count: (_b = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.count) !== null && _b !== void 0 ? _b : 20,\n };\n}\nexport function linkPromiEvents(event1, event2) {\n const transactionEvents = Object.values(TransactionEvent).filter((event) => typeof event === \"string\");\n const forwardEvent = (eventName) => (receipt) => event2.emit(eventName, receipt);\n for (const eventName of transactionEvents) {\n event1.on(eventName, forwardEvent(eventName));\n }\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { GetBridFromChainException } from \"./errors\";\nimport { abortOnError, singleEndpoint, tryNextOnError, queryMajority } from \"./failoverStrategies\";\nimport { Method } from \"./enums\";\nimport { defaultFailoverConfig, setStatusPolling } from \"../blockchainClient/utils\";\nimport { FailoverStrategy } from \"../blockchainClient/enums\";\nimport { isString } from \"../blockchainClient/validation/requests\";\nexport function getBlockchainRidFromIid({ endpointPool, chainId, failOverConfig = {}, nodeManager, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedFailOverConfig = Object.assign(Object.assign({}, defaultFailoverConfig), failOverConfig);\n const config = {\n endpointPool,\n nodeManager,\n dappStatusPolling: setStatusPolling(),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: mergedFailOverConfig.strategy,\n attemptsPerEndpoint: mergedFailOverConfig.attemptsPerEndpoint,\n attemptInterval: mergedFailOverConfig.attemptInterval,\n unreachableDuration: mergedFailOverConfig.unreachableDuration,\n merkleHashVersion: 0,\n };\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/brid/iid_${chainId}`, config);\n const blockchainRid = isString(rspBody);\n if (!blockchainRid) {\n throw error;\n }\n if (error) {\n throw new GetBridFromChainException(chainId, error.message);\n }\n else if (statusCode !== 200) {\n throw new GetBridFromChainException(chainId, blockchainRid);\n }\n return blockchainRid;\n });\n}\nexport function createTimeoutPromise(timeoutMs) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(\"Timeout exceeded\"));\n }, timeoutMs);\n });\n });\n}\nexport const checkStateOfPromises = (promises) => __awaiter(void 0, void 0, void 0, function* () {\n const promiseList = [];\n const pendingState = { status: \"pending\" };\n for (const p of promises) {\n promiseList.push(yield Promise.race([p, pendingState]).then(value => value === pendingState ? Object.assign(Object.assign({}, pendingState), { value: p }) : { status: \"fulfilled\", value }, reason => ({ status: \"rejected\", value: reason })));\n }\n return promiseList;\n});\nexport function racePromisesWithTimeout(promises, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n let remainingPromises = [];\n try {\n const resolvedPromise = yield Promise.race([createTimeoutPromise(timeout), ...promises]);\n const promisesWithState = yield checkStateOfPromises(promises);\n const indexOfpromiseToRemove = promisesWithState.findIndex(p => JSON.stringify(p.value) === JSON.stringify(resolvedPromise));\n // Remove the promise that resolved from the list of promises\n promisesWithState.splice(indexOfpromiseToRemove, 1);\n // Remove the state before returning the promises.\n remainingPromises = promisesWithState.map(p => p.value);\n return remainingPromises;\n }\n catch (error) {\n if (error instanceof Error && error.message === \"Timeout exceeded\") {\n throw error;\n }\n return remainingPromises;\n }\n });\n}\nconst stableStringify = (obj) => JSON.stringify(obj, Object.keys(obj).sort());\nexport const groupResponses = (responses) => {\n const responseMap = responses.reduce((acc, response) => {\n const key = stableStringify(response.result);\n acc[key] = acc[key]\n ? { response: acc[key].response, count: acc[key].count + 1 }\n : { response, count: 1 };\n return acc;\n }, {});\n const distinctResponses = Object.values(responseMap).sort((a, b) => b.count - a.count);\n // Returns the count of the most common response\n const maxNumberOfEqualResponses = () => {\n return distinctResponses.length > 0 ? distinctResponses[0].count : 0;\n };\n // Returns the number of distinct responses\n const numberOfDistinctResponses = () => {\n return distinctResponses.length;\n };\n // Returns the most common response\n const majorityResponse = () => {\n return distinctResponses[0].response.result;\n };\n return {\n maxNumberOfEqualResponses,\n numberOfDistinctResponses,\n majorityResponse,\n };\n};\nexport function requestWithFailoverStrategy(method, path, config, postObject, forceSingleEndpoint = false) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (config.failoverStrategy) {\n case FailoverStrategy.AbortOnError:\n return yield abortOnError({ method, path, config, postObject });\n case FailoverStrategy.TryNextOnError:\n return yield tryNextOnError({ method, path, config, postObject });\n case FailoverStrategy.SingleEndpoint:\n return yield singleEndpoint({ method, path, config, postObject });\n case FailoverStrategy.QueryMajority:\n if (forceSingleEndpoint) {\n return yield singleEndpoint({ method, path, config, postObject });\n }\n return yield queryMajority({ method, path, config, postObject });\n }\n });\n}\nexport const sleep = (ms) => new Promise(r => setTimeout(r, ms));\nexport function convertToPrintable(responseObject) {\n if (typeof responseObject === \"bigint\") {\n return `${responseObject}n`;\n }\n else if (typeof responseObject === \"object\") {\n return JSON.stringify(responseObject, (key, value) => typeof value === \"bigint\" ? `${value}n` : value);\n }\n else {\n return responseObject;\n }\n}\nexport const bftMajority = (n) => n - (n - 1) / 3;\n//# sourceMappingURL=restclientutil.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as logger from \"../logger\";\nimport { EmptyListOfUrlsException, LostMessageError, SerializedTransactionFormatException, TxRejectedError, UnexpectedResponseError, UnexpectedStatusError, InvalidTxRidException, } from \"./errors\";\nimport { toBuffer, toQueryObjectGTV } from \"../formatter\";\nimport { convertToPrintable, requestWithFailoverStrategy } from \"./restclientutil\";\nimport { encodeValue } from \"../gtx/serialization\";\nimport { Method } from \"./enums\";\nimport { FailoverStrategy, ResponseStatus } from \"../blockchainClient/enums\";\nimport { createEndpointObjects, getUrlsFromEndpoints } from \"../blockchainClient/utils\";\nimport { isTxRidValid } from \"../blockchainClient/validation/txRid\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { isRawGtv, isTransaction } from \"../blockchainClient/validation/requests\";\nexport function createRestClient(endpointPool, blockchainRid, maxSockets = 10, pollingInterval = 500, failOverConfig, unreachableDuration = 5000, useStickyNode = false) {\n validateInput(endpointPool, failOverConfig !== null && failOverConfig !== void 0 ? failOverConfig : {});\n return {\n config: {\n nodeManager: createNodeManager({\n nodeUrls: endpointPool,\n useStickyNode,\n }),\n endpointPool: createEndpointObjects(endpointPool),\n pool: { maxSockets },\n pollingInterval,\n failoverStrategy: (failOverConfig === null || failOverConfig === void 0 ? void 0 : failOverConfig.strategy) || FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: (failOverConfig === null || failOverConfig === void 0 ? void 0 : failOverConfig.attemptsPerEndpoint) || 3,\n attemptInterval: (failOverConfig === null || failOverConfig === void 0 ? void 0 : failOverConfig.attemptInterval) || 500,\n unreachableDuration: unreachableDuration,\n },\n getTransaction: function (txRID, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!isTxRidValid(txRID)) {\n callback(new InvalidTxRidException(txRID), null);\n }\n else {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${blockchainRid}/${txRID.toString(\"hex\")}`, this.config);\n const transaction = isTransaction(rspBody);\n handleGetResponse(error, statusCode, statusCode === 200 && transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody), callback);\n }\n });\n },\n postTransaction: function (serializedTransaction, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!Buffer.isBuffer(serializedTransaction)) {\n throw new SerializedTransactionFormatException();\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `tx/${blockchainRid}`, this.config, serializedTransaction);\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callback);\n });\n },\n status: function (txRID, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!isTxRidValid(txRID)) {\n callback(new InvalidTxRidException(txRID), null);\n }\n else {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${blockchainRid}/${txRID.toString(\"hex\")}/status`, this.config);\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callback);\n }\n });\n },\n query: function (nameOrQueryObject, queryArguments) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const callback = (error, result) => {\n if (error) {\n reject(error);\n }\n else {\n resolve(result);\n }\n };\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `query_gtv/${blockchainRid}`, this.config, encodeValue(toQueryObjectGTV(nameOrQueryObject, queryArguments)));\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callback);\n }));\n });\n },\n waitConfirmation(txRID) {\n return new Promise((resolve, reject) => {\n this.status(txRID, (error, result) => {\n if (error) {\n reject(error);\n }\n else {\n const status = result.status;\n switch (status) {\n case ResponseStatus.Confirmed:\n resolve(null);\n break;\n case ResponseStatus.Rejected:\n reject(new TxRejectedError(result.rejectReason));\n break;\n case ResponseStatus.Unknown:\n reject(new LostMessageError());\n break;\n case ResponseStatus.Waiting:\n setTimeout(() => this.waitConfirmation(txRID).then(resolve, reject), this.config.pollingInterval);\n break;\n default:\n logger.error(status);\n reject(new UnexpectedResponseError());\n }\n }\n });\n });\n },\n postAndWaitConfirmation(serializedTransaction, txRID, validate) {\n if (validate === true) {\n return Promise.reject(\"Automatic validation is not yet implemented\");\n }\n return new Promise((resolve, reject) => {\n this.postTransaction(serializedTransaction, error => {\n if (error)\n reject(error);\n else {\n setTimeout(() => this.waitConfirmation(txRID)\n .then(() => resolve(null))\n .catch(reject), 1011);\n }\n });\n });\n },\n getEndpointPool() {\n return getUrlsFromEndpoints(this.config.endpointPool);\n },\n };\n}\nfunction validateInput(endpointPool, failOverConfig) {\n if (!endpointPool.length) {\n throw new EmptyListOfUrlsException();\n }\n if ((failOverConfig === null || failOverConfig === void 0 ? void 0 : failOverConfig.attemptsPerEndpoint) && failOverConfig.attemptsPerEndpoint < 1) {\n logger.debug(\"Attempts can not be 0 or below, setting it to 1\");\n failOverConfig.attemptsPerEndpoint = 1;\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handleGetResponse(error, statusCode, responseObject, callback) {\n try {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n if (error) {\n return callback(error, null);\n }\n if (statusCode !== 200) {\n return callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), null);\n }\n return callback(null, responseObject);\n }\n catch (error) {\n callback(error, null);\n logger.error(`restclient.handleGetResponse(): Failed to call the callback function. ${error}`);\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handlePostResponse(error, statusCode, responseObject, callback) {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n try {\n if (error) {\n logger.error(`In restclient post(). ${error}`);\n callback(error, null);\n }\n else if (statusCode != 200) {\n let errorMessage = `Unexpected status code from server. Code: ${statusCode}.`;\n if (responseObjectPrintable) {\n errorMessage += ` Message: ${responseObjectPrintable}.`;\n }\n logger.error(errorMessage);\n callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), responseObject);\n }\n else {\n logger.info(`Calling responseCallback with responseObject: ${responseObjectPrintable}`);\n callback(null, responseObject);\n }\n }\n catch (error) {\n logger.error(`restclient.handlePostResponse(): Failed to call callback function ${error}`);\n }\n}\n//# sourceMappingURL=restclient.js.map","import { hashConcat } from \"../encryption/encryption\";\nimport { Buffer } from \"buffer\";\nvar internalNodePrefix = Buffer.alloc(1, 0);\nvar leafPrefix = Buffer.alloc(1, 1);\nvar nonExistingNodeHash = Buffer.alloc(32);\nexport function calculateRoot(hashes, depth, leafDepth) {\n var numTransactions = hashes.length;\n if (numTransactions === 0) {\n return Buffer.alloc(32);\n }\n if (depth === undefined) {\n depth = 0;\n }\n if (!leafDepth) {\n leafDepth = Math.ceil(Math.log2(numTransactions));\n }\n if (depth === leafDepth) {\n return hashes[0];\n }\n var maxLeavesPerChild = Math.pow(2, leafDepth - depth - 1);\n var prefix = depth === leafDepth - 1 ? leafPrefix : internalNodePrefix;\n if (numTransactions <= maxLeavesPerChild) {\n var left = calculateRoot(hashes, depth + 1, leafDepth);\n return hashConcat([prefix, left, nonExistingNodeHash]);\n }\n var left = calculateRoot(hashes.slice(0, maxLeavesPerChild), depth + 1, leafDepth);\n var right = calculateRoot(hashes.slice(maxLeavesPerChild), depth + 1, leafDepth);\n return hashConcat([prefix, left, prefix, right]);\n}\nfunction internalMerklePath(hashes, targetIndex, depth, leafDepth) {\n var numTransactions = hashes.length;\n if (depth === leafDepth) {\n return [];\n }\n var maxLeavesPerChild = Math.pow(2, leafDepth - depth - 1);\n var prefix = depth == leafDepth - 1 ? leafPrefix : internalNodePrefix;\n if (numTransactions <= maxLeavesPerChild) {\n var path = internalMerklePath(hashes, targetIndex, depth + 1, leafDepth);\n path.push({ side: 1, hash: nonExistingNodeHash });\n return path;\n }\n if (targetIndex < maxLeavesPerChild) {\n var path = internalMerklePath(hashes.slice(0, maxLeavesPerChild), targetIndex, depth + 1, leafDepth);\n var right = calculateRoot(hashes.slice(maxLeavesPerChild), depth + 1, leafDepth);\n path.push({ side: 1, hash: right });\n }\n else {\n var left = calculateRoot(hashes.slice(0, maxLeavesPerChild), depth + 1, leafDepth);\n var path = internalMerklePath(hashes.slice(maxLeavesPerChild), targetIndex - maxLeavesPerChild, depth + 1, leafDepth);\n path.push({ side: 0, hash: left });\n }\n return path;\n}\n/*\n * a path looks like this:\n * {merklePath: [{side: <0|1>, hash: <hash buffer depth n-1>},\n * {side: <0|1>, hash: <hash buffer depth n-2>},\n * ...\n * {side: <0|1>, hash: <hash buffer depth 1>}]}\n */\nexport function merklePath(hashes, target) {\n if (!hashes || hashes.length == 0) {\n throw new Error(\"Cannot make merkle path from empty transaction set\");\n }\n var index = -1;\n for (var i = 0; i < hashes.length; i++) {\n if (hashes[i].equals(target)) {\n index = i;\n break;\n }\n }\n if (index === -1) {\n throw new Error(\"Target is not in list of hashes\");\n }\n var leafDepth = Math.ceil(Math.log2(hashes.length));\n var path = internalMerklePath(hashes, index, 0, leafDepth);\n return path;\n}\n/**\n *\n * @param path The merkle path to validate.\n * Format [{side: <0|1>, hash: <hash buffer depth n-1>},\n * {side: <0|1>, hash: <hash buffer depth n-2>},\n * ...,\n * {side: <0|1>, hash: <hash buffer depth 1>}]\n\n * @param target the leaf hash that the path proves belongs in the merkleRoot\n * @param merkleRoot The merkle root that supposedly contains the target via the supplied path.\n * The merkle root is typically taken from a block header.\n */\nexport function validateMerklePath(path, target, merkleRoot) {\n let currentHash = target;\n for (let i = 0; i < path.length; i++) {\n const item = path[i];\n const prefix = (i === 0) ? Buffer.from([1]) : Buffer.from([0]);\n if (item.side === 0) {\n currentHash = hashConcat([prefix, item.hash, prefix, currentHash]);\n }\n else {\n if (item.hash.equals(nonExistingNodeHash)) {\n currentHash = hashConcat([prefix, currentHash, nonExistingNodeHash]);\n }\n else {\n currentHash = hashConcat([prefix, currentHash, prefix, item.hash]);\n }\n }\n }\n return merkleRoot.equals(currentHash);\n}\n//# sourceMappingURL=merkleHelper.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as pc from \"../../index\";\nimport { BlockchainUrlUndefinedException } from \"../blockchainClient/errors\";\n/**\n * @deprecated Use the function createClient instead.\n * Provides postchain clients that can be used to communicate with dapps within the chromia network\n * @param chain0BRID brid of chain0\n * @param rest rest client configured to node running chain0\n */\nexport function chromiaClientProvider(chain0BRID, rest, merkleHashVersion) {\n const chain0Client = pc.gtxClient.createClient(rest, chain0BRID, [], merkleHashVersion);\n return {\n blockchainConnection: function (dappBRID) {\n return __awaiter(this, void 0, void 0, function* () {\n const queryObject = {\n type: \"cm_get_blockchain_api_urls\",\n blockchain_rid: dappBRID,\n };\n const baseUrls = yield chain0Client.query(queryObject);\n if (!baseUrls.length) {\n throw new BlockchainUrlUndefinedException(dappBRID);\n }\n return pc.restClient.createRestClient(baseUrls, dappBRID);\n });\n },\n };\n}\n//# sourceMappingURL=chromiaClientProvider.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { createNodeManager } from \"../restclient/nodeManager\";\nimport { setStatusPolling } from \"./utils\";\nexport function createStubClient() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n config: {\n merkleHashVersion: 1,\n nodeManager: createNodeManager({\n nodeUrls: [],\n }),\n endpointPool: [],\n blockchainRid: \"0000000000000000000000000000000000000000000000000000000000000000\",\n dappStatusPolling: setStatusPolling({ interval: 5000, count: 5 }),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 5000,\n unreachableDuration: 30000,\n directoryChainRid: \"1111111111111111111111111111111111111111111111111111111111111111\",\n },\n query() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"query rejected\");\n });\n },\n signTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"signTransaction rejected\");\n });\n },\n sendTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"sendTransaction rejected\"));\n },\n signAndSendUniqueTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"signAndSendUniqueTransaction rejected\"));\n },\n getTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransaction rejected\");\n });\n },\n getTransactionStatus() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionStatus rejected\");\n });\n },\n addNop() {\n throw new Error(\"addNop error\");\n },\n getTransactionRid() {\n throw new Error(\"getTransactionRid error\");\n },\n getTransactionsInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionsInfo rejected\");\n });\n },\n getTransactionInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionInfo rejected\");\n });\n },\n getAnchoringStatusForBlockRid() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getAnchoringStatusForBlockRid rejected\");\n });\n },\n getTransactionConfirmationLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionConfirmationLevel rejected\");\n });\n },\n getTransactionCount() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionCount rejected\");\n });\n },\n getBlocks() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getBlockInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getLatestBlock() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getLatestBlock rejected\");\n });\n },\n getBlocksInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlocksInfo rejected\");\n });\n },\n encodeTransaction() {\n throw new Error(\"encodeTransaction error\");\n },\n decodeTransactionToGtx() {\n throw new Error(\"decodeTransactionToGtx error\");\n },\n getClientNodeUrlPool() {\n return [];\n },\n getConfirmationProof() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getConfirmationProof rejected\");\n });\n },\n getClusterAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getClusterAnchoringTransactionConfirmation rejected\");\n });\n },\n getSystemAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getSystemAnchoringTransactionConfirmation rejected\");\n });\n },\n getAppStructure() {\n return Promise.reject(\"getAppStructure rejected\");\n },\n };\n });\n}\n//# sourceMappingURL=clientStub.js.map","import { GetTransactionRidException } from \"../blockchainClient/errors\";\nimport * as gtxTool from \"../gtx/gtx\";\n/**\n * Calculates and returns the transaction RID, i.e., the merkle root hash of the transaction.\n * @param transaction The transaction in format of RawGtxBody\n *\n */\nexport const calculateTransactionRid = (transaction, merkleHashVersion) => {\n try {\n return gtxTool.getDigestToSignFromRawGtxBody(transaction, merkleHashVersion);\n }\n catch (e) {\n throw new GetTransactionRidException(e);\n }\n};\n//# sourceMappingURL=calculateTransactionRid.js.map","import * as gtxTool from \"../gtx/gtx\";\n/**\n *\n * Encodes the gtx using ASN.1.\n * @returns the gtx encoded\n */\nexport const encodeTransaction = (gtx) => {\n return gtxTool.serialize(gtx);\n};\n//# sourceMappingURL=encodeTransaction.js.map","import * as gtxTool from \"../gtx/gtx\";\nimport { dumpGtv, logger } from \"../..\";\n/**\n * Decodes the transaction using ASN.1.\n * @returns the transaction decoded in GTX format\n */\nexport const decodeTransactionToGtx = (encodedTransaction) => {\n const gtx = gtxTool.deserialize(encodedTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${dumpGtv(gtx)}`);\n return gtx;\n};\n//# sourceMappingURL=decodeTransactionToGtx.js.map","import { formatter } from \"../..\";\nexport function dumpGtx(gtxTx) {\n var _a;\n return `blockchainRid:\\n${formatter.toString(gtxTx.blockchainRid)}\\n\noperations:\n${gtxTx.operations.map(op => ` - ${op.opName}(${op.args.map(dumpGtv).join(\", \")})\\n`).join(\"\")}\nsigners:\n${gtxTx.signers.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}\nsignatures:\n${(_a = gtxTx.signatures) === null || _a === void 0 ? void 0 : _a.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}`;\n}\nexport function dumpGtv(rawGtv) {\n return JSON.stringify(rawGtv, (_key, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}L`;\n }\n if (Buffer.isBuffer(value)) {\n return formatter.toString(value);\n }\n if (typeof value === \"object\" &&\n value !== null &&\n value.type === \"Buffer\" &&\n Array.isArray(value.data)) {\n return `0x${value.data}`;\n }\n return value;\n });\n}\n//# sourceMappingURL=dump.js.map"],"names":["this","Buffer","BN","util","PathLeafElement","PathSet","require$$0","HASH_PREFIX_NODE","HASH_PREFIX_LEAF","HASH_PREFIX_NODE_ARRAY","HASH_PREFIX_NODE_DICT","Node","SubTreeRootNode","Leaf","EmptyLeaf","BinaryTree","ArrayHeadNode","DictHeadNode","secp256k1","crypto","sign","require$$2","require$$1","require$$3","BinaryTreeFactory","ProofNode","ProofNodeSimple","ProofValueLeaf","ProofHashedLeaf","ProofNodeArrayHead","ProofNodeDictHead","MerkleProofTree","MerkleProofTreeFactory","MerkleHashSummary","require$$4","MerkleHashSummaryFactory","MerkleHashCalculator","CryptoSystem","merkleHashSummary","encode","serialization.encodeValue","decode","serialization.decodeValue","serialization.encodeValueGtx","serialization.decodeValueGtx","__awaiter","gtv.gtvHash","gtxEncode","gtxDecode","_a","createClient","gtx","logger.debug","gtxTool.sign","gtxTool.getDigestToSign","gtxTool.addSignature","gtxTool.addTransactionToGtx","gtxTool.serialize","gtxTool.emptyGtx","gtxTool.addSignerToGtx","gtxTool.deserialize","error","logger.error","logger.warning","logger.info","z","FailoverStrategy","ResponseStatus","TransactionEvent","AnchoringStatus","ChainConfirmationLevel","EventEmitter","randomBytes","pc.gtxClient.createClient","pc.restClient.createRestClient","gtxTool.getDigestToSignFromRawGtxBody","formatter.toString"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/gtv/definition.js","../src/customError/index.js","../src/gtx/errors.js","../src/blockchainClient/validation/rawGtx.js","../src/formatter.js","../src/gtx/serialization.js","../src/gtv/index.js","../src/encryption/errors.js","../src/encryption/encryption.js","../src/gtx/index.js","../src/gtx/gtx.js","../src/logger.js","../src/blockchainClient/errors.js","../src/blockchainClient/enums.js","../src/blockchainClient/nodeManager.js","../src/blockchainClient/validation/bufferSchema.js","../src/blockchainClient/validation/txRid.js","../src/blockchainClient/validation/anchoringTransaction.js","../src/ICCF/error.js","../src/blockchainClient/validation/requests.js","../src/utils/encodeTransaction.js","../src/utils/constants.js","../src/blockchainClient/validation/merkleHash.js","../src/blockchainClient/httpUtil.js","../src/blockchainClient/failoverStrategies.js","../src/blockchainClient/requestWithFailoverStrategy.js","../src/blockchainClient/utils.js","../src/ICCF/utils.js","../src/ICCF/IccfProofTxMaterialBuilder.js","../src/promiEvent/promiEventEmitter.js","../src/promiEvent/promiEvents.js","../src/blockchainClient/validation/blockIdentifier.js","../src/blockchainClient/validation/networkSettings.js","../src/blockchainClient/validation/signMethod.js","../src/blockchainClient/validation/transactionStatusReponse.js","../src/blockchainClient/blockchainClient.js","../src/blockchainClient/clientStub.js","../src/utils/calculateTransactionRid.js","../src/utils/dump.js","../src/utils/decodeTransactionToGtx.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst asn = require(\"@chromia/asn1/lib/asn1\");\nexport const ASNDictPair = asn.define(\"DictPair\", function () {\n this.seq().obj(this.key(\"name\").utf8str(), this.key(\"value\").use(rawGTV));\n});\nexport const rawGTV = asn.define(\"GtvValue\", function () {\n this.choice({\n null: this.explicit(0).null_(),\n byteArray: this.explicit(1).octstr(),\n string: this.explicit(2).utf8str(),\n integer: this.explicit(3).int(),\n dict: this.explicit(4).seqof(ASNDictPair),\n array: this.explicit(5).seqof(rawGTV),\n bigInteger: this.explicit(6).int(),\n });\n});\nexport const ASNBuffer = asn.define(\"Buffer\", function () {\n this.octstr();\n});\n//# sourceMappingURL=definition.js.map","export class CustomError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomError } from \"../customError\";\nexport class UnexpectedArgumentTypeError extends CustomError {\n constructor(typedArg) {\n super(`Cannot parse typedArg ${JSON.stringify(typedArg)}. Unknown type ${typedArg.type}`, 400);\n }\n}\nexport class MissingGtxException extends CustomError {\n constructor() {\n super(`Missing instance of gtx protocol (used for communicating with postchain) to add operation to`, 400);\n }\n}\nexport class AlreadySignedTransactionException extends CustomError {\n constructor(operation) {\n super(`Cannot add ${operation} calls to an already signed gtx`, 400);\n }\n}\nexport class NumberOfSignersAndSignaturesException extends CustomError {\n constructor() {\n super(`Not matching number of signers and signatures`, 400);\n }\n}\nexport class MissingSignerException extends CustomError {\n constructor() {\n super(`No such signer, remember to add signer to transaction before adding a signature`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","import { z } from \"zod\";\nconst bufferSchema = z.custom(val => Buffer.isBuffer(val), {\n message: \"Expected Buffer\",\n});\nconst rawGtvSchema = z.lazy(() => z.union([\n z.null(),\n z.boolean(),\n bufferSchema,\n z.string(),\n z.number(),\n z.bigint(),\n z.array(rawGtvSchema),\n z.record(rawGtvSchema),\n]));\nconst rawGtxOpSchema = z.tuple([z.string(), z.array(rawGtvSchema)]);\nconst rawGtxBodySchema = z.tuple([bufferSchema, z.array(rawGtxOpSchema), z.array(bufferSchema)]);\nconst rawGtxSchema = z.tuple([rawGtxBodySchema, z.array(bufferSchema)]);\nexport function isRawGtx(value) {\n const result = rawGtxSchema.safeParse(value);\n return result.success;\n}\n//# sourceMappingURL=rawGtx.js.map","import { isRawGtx } from \"./blockchainClient/validation/rawGtx\";\nexport function pgBytes(buffer) {\n if (!Buffer.isBuffer(buffer)) {\n throw new PgBytesInputException(buffer);\n }\n return `\\\\x${buffer.toString(\"hex\")}`;\n}\n/**\n * Converts hex string to Buffer\n * @param key: string\n * @returns {Buffer}\n */\nexport function toBuffer(key) {\n return Buffer.from(key, \"hex\");\n}\n/**\n * Converts Buffer to hex string\n * @param buffer: Buffer\n * @returns {string}\n */\nexport function toString(buffer) {\n return buffer.toString(\"hex\").toUpperCase();\n}\nexport function toQueryObjectGTV(nameOrObject, queryArguments) {\n if (typeof nameOrObject === \"string\") {\n return [nameOrObject, Object.assign({}, queryArguments)];\n }\n else {\n const { name, args } = nameOrObject;\n return [name, args || {}];\n }\n}\nexport class PgBytesInputException extends Error {\n constructor(buffer) {\n super(`util.pgBytes expects a buffer, but got ${typeof buffer}`);\n }\n}\nexport function ensureBuffer(value) {\n if (value instanceof Buffer) {\n return value;\n }\n else {\n return toBuffer(value);\n }\n}\nexport function ensureString(value) {\n if (typeof value === \"string\") {\n return value.toUpperCase();\n }\n else {\n return toString(value);\n }\n}\nexport function checkGtvType(value) {\n try {\n if (value == null) {\n return true;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (typeof value === \"string\" || typeof value === \"bigint\") {\n return true;\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(item => checkGtvType(item));\n }\n if (typeof value === \"object\") {\n return Object.values(value).every(val => checkGtvType(val));\n }\n }\n catch (error) {\n throw new Error(`Failed to check type: ${error}`);\n }\n return false;\n}\nexport function rawGtxToGtx(rawGtx) {\n const rawGtxBody = rawGtx[0];\n const signatures = rawGtx[1];\n const gtxBody = {\n blockchainRid: rawGtxBody[0],\n operations: rawGtxBody[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: rawGtxBody[2],\n };\n return {\n blockchainRid: gtxBody.blockchainRid,\n operations: gtxBody.operations,\n signers: gtxBody.signers,\n signatures,\n };\n}\nexport function rawGtxToRawGtxBody(rawGtx) {\n return rawGtx[0];\n}\nexport function checkGtxType(value) {\n if (!isRawGtx(value))\n return false;\n try {\n rawGtxToGtx(value);\n return true;\n }\n catch (error) {\n return false;\n }\n}\nexport function removeDuplicateSigners(signers) {\n const signersAsString = [];\n signers.forEach(item => {\n const itemAsString = item.toString(\"hex\");\n if (!signersAsString.includes(itemAsString)) {\n signersAsString.push(itemAsString);\n }\n });\n const result = [];\n signersAsString.forEach(item => {\n result.push(Buffer.from(item, \"hex\"));\n });\n return result;\n}\nexport function matchRellErrorString(rellError) {\n const parsed = rellError.match(/\\[([^\\]]+)\\]\\sOperation\\s'([^']+)'\\sfailed:\\s(.+)$/);\n if (!parsed)\n return {};\n const [rellLine, operation, shortReason] = parsed.slice(1);\n return { shortReason, rellLine, operation };\n}\n//# sourceMappingURL=formatter.js.map","import { rawGTV } from \"../gtv/definition\";\nimport { BN } from \"bn.js\";\nimport { UnexpectedArgumentTypeError } from \"./errors\";\nimport { checkGtxType } from \"../formatter\";\nexport function encodeValue(rawGtv) {\n return rawGTV.encode(createTypedArg(rawGtv));\n}\nexport function encodeValueGtx(rawGtx) {\n return encodeValue(rawGtx);\n}\nexport function decodeValue(bytes) {\n try {\n const obj = rawGTV.decode(bytes);\n return parseValue(obj);\n }\n catch (error) {\n throw new Error(`Invalid GTV data. ${error}`);\n }\n}\nexport function decodeValueGtx(bytes) {\n const decodedValue = decodeValue(bytes);\n if (!checkGtxType(decodedValue)) {\n throw new Error(`Unexpected type of value: ${decodedValue}, expected decoded value to be of type RawGtx`);\n }\n return decodedValue;\n}\nexport function parseValue(typedArg) {\n var _a, _b;\n if (typedArg.type === \"null\") {\n return null;\n }\n else if (typedArg.type === \"byteArray\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"string\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"integer\") {\n return Number(typedArg.value);\n }\n else if (typedArg.type === \"array\") {\n const arrayValue = typedArg.value;\n return arrayValue.map((item) => parseValue(item));\n }\n else if (typedArg.type === \"bigInteger\") {\n return BigInt((_b = (_a = typedArg.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\");\n }\n else if (typedArg.type === \"dict\") {\n const arrayValue = typedArg.value;\n const result = {};\n arrayValue.forEach((pair) => {\n result[pair.name] = parseValue(pair.value);\n });\n return result;\n }\n else {\n throw new UnexpectedArgumentTypeError(typedArg);\n }\n}\nexport function createTypedArg(value) {\n try {\n if (value == null) {\n return { type: \"null\", value: null };\n }\n if (Buffer.isBuffer(value)) {\n return { type: \"byteArray\", value: value };\n }\n if (typeof value === \"boolean\") {\n return { type: \"integer\", value: value ? 1 : 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", value: value };\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return { type: \"integer\", value: new BN(value) };\n }\n if (typeof value === \"bigint\") {\n return { type: \"bigInteger\", value: new BN(value.toString()) };\n }\n if (value.constructor === Array) {\n return {\n type: \"array\",\n value: value.map(item => createTypedArg(item)),\n };\n }\n if (typeof value === \"object\") {\n let valueAsDictPair = value;\n if (isDictPairWithStringKey(valueAsDictPair)) {\n valueAsDictPair = sortDictPairByKey(valueAsDictPair);\n }\n return {\n type: \"dict\",\n value: Object.keys(valueAsDictPair).map(function (key) {\n return { name: key, value: createTypedArg(valueAsDictPair[key]) };\n }),\n };\n }\n }\n catch (error) {\n const message = value ? value.toString() : \"RawGtv\";\n throw new Error(`Failed to encode ${message}: ${error}`);\n }\n throw new Error(`value ${value} have unsupported type: ${typeof value}`);\n}\nfunction isDictPairWithStringKey(obj) {\n for (const key in obj) {\n if (typeof key !== \"string\") {\n return false;\n }\n }\n return true;\n}\nfunction sortDictPairByKey(dict) {\n const sortedArray = Object.entries(dict).sort(([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n });\n const sortedDict = {};\n for (const [key, value] of sortedArray) {\n sortedDict[key] = value;\n }\n return sortedDict;\n}\n//# sourceMappingURL=serialization.js.map","import { gtvHash } from \"merklehashts\";\nimport * as serialization from \"../gtx/serialization\";\nconst gtvHash2 = (obj, merkleHashVersion) => {\n return gtvHash(obj, merkleHashVersion);\n};\nconst encode = serialization.encodeValue;\nconst decode = serialization.decodeValue;\nexport { encode, decode, gtvHash2 as gtvHash };\n//# sourceMappingURL=index.js.map","export class PrivKeyFormatException extends Error {\n constructor(privKey) {\n super(`Invalid key length. Expected 32, but got ${privKey.length}`);\n }\n}\nexport class MissingPrivKeyArgumentException extends Error {\n constructor() {\n super(`Missing argument privKey`);\n }\n}\n//# sourceMappingURL=errors.js.map","import * as crypto from \"crypto\";\nimport * as secp256k1 from \"secp256k1\";\nimport { ensureBuffer } from \"../formatter\";\nimport { MissingPrivKeyArgumentException, PrivKeyFormatException } from \"./errors\";\nexport function createPublicKey(privKey) {\n validatePrivKeyFormat(privKey);\n return Buffer.from(secp256k1.publicKeyCreate(privKey, true).buffer);\n}\nexport function randomBytes(size) {\n return crypto.randomBytes(size);\n}\nexport function sha256(buffer) {\n return crypto.createHash(\"sha256\").update(buffer).digest();\n}\nexport const hash256 = sha256;\nexport function hashConcat(items) {\n return hash256(Buffer.concat(items));\n}\n/**\n * @param content the content that the signature signs. It will be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkSignature(content, pubKey, signature) {\n const digest = hash256(content);\n return checkDigestSignature(digest, pubKey, signature);\n}\n/**\n * @param digest the signed digest. It will not be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkDigestSignature(digest, pubKey, signature) {\n return secp256k1.ecdsaVerify(signature, digest, pubKey);\n}\n/**\n * @param content to sign. It will be digested before signing.\n * @param privKey The private key to sign the content with\n *\n * @return the signature\n */\nexport function sign(content, privKey) {\n validatePrivKeyFormat(privKey);\n const digestBuffer = sha256(content);\n return signDigest(digestBuffer, privKey);\n}\n/**\n * @param digestBuffer to sign. It will not be digested before signing.\n * @param privKey The private key to sign the digest with\n *\n * @return the signature\n */\nexport function signDigest(digestBuffer, privKey) {\n return Buffer.from(secp256k1.ecdsaSign(digestBuffer, privKey).signature);\n}\n/**\n * Creates a key pair (which usually represents one user)\n * @param privKey to create key pair based on\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function makeKeyPair(privKey) {\n let pubKey;\n if (privKey) {\n privKey = ensureBuffer(privKey);\n pubKey = createPublicKey(privKey);\n }\n else {\n do {\n privKey = randomBytes(32);\n } while (!secp256k1.privateKeyVerify(privKey));\n pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n }\n return { pubKey, privKey };\n}\n/**\n * Generates a 16bytes TUID (Text unique ID) (a 32characters long string)\n * @returns string\n */\nexport function makeTuid() {\n return randomBytes(16).toString(\"hex\");\n}\n/**\n * Verify that keypair is correct. Providing the private key, this function returns its associated public key\n * @param privKey: Buffer\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function verifyKeyPair(privKey) {\n validatePrivKeyFormat(privKey);\n const pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n return { pubKey, privKey };\n}\nfunction validatePrivKeyFormat(privKey) {\n if (!privKey) {\n throw new MissingPrivKeyArgumentException();\n }\n if (!Buffer.isBuffer(privKey) || privKey.length !== 32) {\n throw new PrivKeyFormatException(privKey);\n }\n}\n//# sourceMappingURL=encryption.js.map","import * as serialization from \"./serialization\";\nconst encode = serialization.encodeValueGtx;\nconst decode = serialization.decodeValueGtx;\nexport { encode, decode };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as gtv from \"../gtv\";\nimport { checkDigestSignature, createPublicKey, makeKeyPair, signDigest, } from \"../encryption/encryption\";\nimport { AlreadySignedTransactionException, MissingGtxException, MissingSignerException, } from \"./errors\";\nimport { encode as gtxEncode, decode as gtxDecode } from \"./index\";\nimport { ensureBuffer } from \"../formatter\";\nexport function emptyGtx(blockchainRid) {\n return { blockchainRid, operations: [], signers: [] };\n}\n/**\n * Adds a function call to a GTX. Creates a new GTX if none specified.\n * This function will throw Error if gtx is already signed\n * @param opName the name of the function to call\n * @param args the array of arguments of the function call. If no args, this must be an empty array\n * @param gtx the function call will be added to this gtx\n * @returns the gtx\n * @throws if gtx is null or if gtx is already signed\n */\nexport function addTransactionToGtx(opName, args, gtx) {\n if (gtx == null) {\n throw new MissingGtxException();\n }\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"function\");\n }\n gtx.operations.push({ opName: opName, args: args });\n return gtx;\n}\nexport function addSignerToGtx(signer, gtx) {\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"signer\");\n }\n gtx.signers.push(signer);\n}\n/**\n * Serializes the gtx to get tx hash\n * @param gtx the gtx to serialize\n */\nexport function getDigest(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\n/**\n * Serializes the gtx for signing\n * @param gtx the gtx to serialize\n */\nexport function getDigestToSign(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\nexport function getDigestToSignFromRawGtxBody(gtxBody, merkleHashVersion) {\n return gtv.gtvHash(gtxBody, merkleHashVersion);\n}\nexport function gtxToRawGtxBody(gtx) {\n return [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ];\n}\nexport function gtxToRawGtx(gtx) {\n var _a;\n return [\n [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ],\n (_a = gtx.signatures) !== null && _a !== void 0 ? _a : [],\n ];\n}\nexport function sign(gtx, privOrSigProv, merkleHashVersion, pubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n if (privOrSigProv instanceof Buffer) {\n const digestToSign = getDigestToSign(gtx, merkleHashVersion);\n const signature = signDigest(digestToSign, privOrSigProv);\n return addSignature(pubKey || makeKeyPair(privOrSigProv).pubKey, signature, gtx);\n }\n else {\n // Removes signatures and extract the rawgtxBody\n const rawGtxBody = gtxToRawGtxBody(gtx);\n const signature = yield privOrSigProv.sign(rawGtxBody);\n return addSignature(privOrSigProv.pubKey, signature, gtx);\n }\n });\n}\n/**\n * Adds a signature to the gtx\n */\nexport function addSignature(pubKeyBuffer, signatureBuffer, gtx) {\n if (!gtx.signatures) {\n gtx.signatures = Array(gtx.signers.length);\n }\n const signerIndex = gtx.signers.findIndex((signer) => pubKeyBuffer.equals(signer));\n if (signerIndex === -1) {\n throw new MissingSignerException();\n }\n gtx.signatures[signerIndex] = signatureBuffer;\n return gtx;\n}\nexport function serialize(gtx) {\n if (!gtx.signatures) {\n // TODO\n // The gtx is not signed, but we must include\n // the signatures attribute, so let's add that.\n gtx.signatures = [];\n }\n return gtxEncode([gtxToRawGtxBody(gtx), gtx.signatures]);\n}\nexport function deserialize(gtxBytes) {\n const deserializedTx = gtxDecode(gtxBytes);\n const body = deserializedTx[0];\n const gtvTxBody = {\n blockchainRid: body[0],\n operations: body[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: body[2],\n };\n const signatures = deserializedTx[1];\n return {\n blockchainRid: gtvTxBody.blockchainRid,\n operations: gtvTxBody.operations,\n signers: gtvTxBody.signers,\n signatures,\n };\n}\nexport function checkGTXSignatures(txHash, gtx) {\n var _a;\n if (!Array.isArray(gtx.signatures) || gtx.signatures.length === 0) {\n return false;\n }\n for (const i in gtx.signers) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], (_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]);\n if (!signValid)\n return signValid;\n }\n return true;\n}\nexport function checkExistingGTXSignatures(txHash, gtx) {\n var _a;\n for (const i in gtx.signers) {\n if ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], gtx.signatures[i]);\n if (!signValid)\n return signValid;\n }\n }\n return true;\n}\nexport function newSignatureProvider(merkleHashVersion, keyPair) {\n let pub, priv;\n if (keyPair) {\n priv = ensureBuffer(keyPair.privKey);\n pub = keyPair.pubKey ? ensureBuffer(keyPair.pubKey) : createPublicKey(priv);\n }\n else {\n ({ privKey: priv, pubKey: pub } = makeKeyPair());\n }\n return {\n pubKey: pub,\n sign: (gtx) => __awaiter(this, void 0, void 0, function* () {\n const signature = getDigestToSignFromRawGtxBody(gtx, merkleHashVersion);\n return signDigest(signature, priv);\n }),\n };\n}\nexport function rawGtvToGtx(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const gtvArray = gtv;\n if (!Array.isArray(gtvArray[0])) {\n throw new Error(\"First element must be an array\");\n }\n if (!Array.isArray(gtvArray[1])) {\n throw new Error(\"Second element must be an array\");\n }\n gtvArray[1].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n const gtxBody = rawGtvToGtxBody(gtvArray[0]);\n return Object.assign(Object.assign({}, gtxBody), { signatures: gtvArray[1] });\n}\nfunction rawGtvToGtxBody(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 3) {\n throw new Error(\"Gtv must be an array of size 3\");\n }\n const array = gtv;\n if (!Buffer.isBuffer(array[0])) {\n throw new Error(\"First element must be a byte array\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n if (!Array.isArray(array[2])) {\n throw new Error(\"Third element must be an array\");\n }\n array[2].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n return {\n blockchainRid: array[0],\n operations: array[1].map(element => rawGtvToRellOp(element)),\n signers: array[2],\n };\n}\nfunction rawGtvToRellOp(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const array = gtv;\n if (typeof array[0] !== \"string\") {\n throw new Error(\"First element must be a string\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n return { opName: array[0], args: array[1] };\n}\n//# sourceMappingURL=gtx.js.map","var _a;\nvar MsgType;\n(function (MsgType) {\n MsgType[\"Debug\"] = \"DEBUG\";\n MsgType[\"Info\"] = \"INFO\";\n MsgType[\"Error\"] = \"ERROR\";\n MsgType[\"Warning\"] = \"WARNING\";\n})(MsgType || (MsgType = {}));\nvar LogColor;\n(function (LogColor) {\n LogColor[\"Red\"] = \"\\u001B[91m\";\n LogColor[\"Green\"] = \"\\u001B[92m\";\n LogColor[\"Blue\"] = \"\\u001B[36m\";\n LogColor[\"Yellow\"] = \"\\u001B[93m\";\n LogColor[\"StopColor\"] = \"\\u001B[0m\";\n})(LogColor || (LogColor = {}));\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Debug\"] = \"DEBUG\";\n LogLevel[\"Info\"] = \"INFO\";\n LogLevel[\"Error\"] = \"ERROR\";\n LogLevel[\"Warning\"] = \"WARNING\";\n LogLevel[\"Disabled\"] = \"DISABLED\";\n})(LogLevel || (LogLevel = {}));\nconst logLevelMap = {\n [LogLevel.Warning]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Debug]: 3,\n [LogLevel.Error]: 0,\n [LogLevel.Disabled]: -1,\n};\nconst DEFAULT_LOG_LEVEL = logLevelMap[LogLevel.Warning];\nlet logLevel = typeof process === \"undefined\"\n ? DEFAULT_LOG_LEVEL\n : (_a = logLevelMap[process.env.LOG_LEVEL]) !== null && _a !== void 0 ? _a : DEFAULT_LOG_LEVEL;\nexport function setLogLevel(level) {\n logLevel = logLevelMap[level];\n}\nexport function getLogLevel() {\n return Object.keys(logLevelMap).find(key => logLevelMap[key] === logLevel);\n}\nexport function debug(message, moduleName) {\n if (logLevel >= 3) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Debug,\n color: LogColor.Blue,\n });\n }\n}\nexport function info(message, moduleName) {\n if (logLevel >= 2) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Info,\n color: LogColor.Green,\n });\n }\n}\nexport function error(message, moduleName) {\n if (logLevel != -1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Error,\n color: LogColor.Red,\n });\n }\n}\nexport function warning(message, moduleName) {\n if (logLevel >= 1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Warning,\n color: LogColor.Yellow,\n });\n }\n}\nfunction emitLogMessage({ msgType, message, color, moduleName, }) {\n const time = getTimestamp();\n const moduleNameMessage = moduleName ? `[${moduleName}]` : \"\";\n console.log(`[${time}] ${color}${msgType}:${LogColor.StopColor} ${moduleNameMessage} ${message}`);\n}\nfunction getTimestamp() {\n const pad = (n, s = 2) => `${new Array(s).fill(0)}${n}`.slice(-s);\n const date = new Date();\n return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}:${pad(date.getMilliseconds(), 3)}`;\n}\nexport function logger(moduleName) {\n return {\n debug: (message) => debug(message, moduleName),\n info,\n error,\n warning,\n setLogLevel,\n disable: () => setLogLevel(LogLevel.Disabled),\n };\n}\n//# sourceMappingURL=logger.js.map","import { CustomError } from \"../customError\";\nimport { matchRellErrorString } from \"../formatter\";\nexport class MissingPubKeyError extends CustomError {\n constructor() {\n super(`No public key was provided`, 400);\n }\n}\nexport class MissingBlockchainIdentifierError extends CustomError {\n constructor() {\n super(`No blockchain identifier was provided. Include either a blockchainRid (string) or a blockchainIid (number).`, 400);\n }\n}\nexport class MissingNodeUrlError extends CustomError {\n constructor() {\n super(`No node url or directory node url was provided. Include either a nodeUrl (string or string[]) or a directory node url (string or string[]).`, 400);\n }\n}\nexport class BlockchainUrlUndefinedException extends CustomError {\n constructor(brid) {\n const idType = typeof brid === \"string\" ? \"BRID\" : \"IID\";\n super(`Cannot find nodes hosting the blockchain with ${idType} ${brid}`, 400);\n }\n}\nexport class DirectoryNodeUrlPoolException extends CustomError {\n constructor() {\n super(`No directory node url was provided`, 400);\n }\n}\nexport class InvalidTransactionFormatException extends CustomError {\n constructor() {\n super(`The transaction is not in the right format`, 400);\n }\n}\nexport class GetTransactionRidException extends CustomError {\n constructor(error) {\n super(`\"Error occurred while getting transaction RID:\", ${error}`, 400);\n }\n}\nexport class TxRejectedError extends Error {\n constructor(rejectReason) {\n super(`Transaction was rejected, ${rejectReason}`);\n this.name = \"TxRejectedError\";\n this.fullReason = rejectReason;\n const result = matchRellErrorString(rejectReason);\n this.shortReason = result.shortReason;\n this.rellLine = result.rellLine;\n this.operation = result.operation;\n }\n}\nexport class UnexpectedStatusError extends CustomError {\n constructor(status, error) {\n let errorMessage = `Unexpected status code from server. Code: ${status}.`;\n if (status === null) {\n super(errorMessage, 500); // default status code\n }\n else {\n if (error) {\n errorMessage += ` Message: ${error}.`;\n }\n super(errorMessage, status);\n }\n }\n}\nexport class InvalidTxRidException extends CustomError {\n constructor(txRID) {\n super(`expected length 32 of txRID, but got ${txRID && txRID.length}`, 400);\n }\n}\nexport class SerializedTransactionFormatException extends CustomError {\n constructor() {\n super(`messageHash is not a Buffer`, 400);\n }\n}\nexport class GetBridFromChainException extends Error {\n constructor(chainId, reason) {\n super(`Error resolving BRID for chainId ${chainId}, reason: ${reason}`);\n }\n}\n//# sourceMappingURL=errors.js.map","export var FailoverStrategy;\n(function (FailoverStrategy) {\n FailoverStrategy[\"AbortOnError\"] = \"abortOnError\";\n FailoverStrategy[\"TryNextOnError\"] = \"tryNextOnError\";\n FailoverStrategy[\"SingleEndpoint\"] = \"singleEndpoint\";\n FailoverStrategy[\"QueryMajority\"] = \"queryMajority\";\n})(FailoverStrategy || (FailoverStrategy = {}));\nexport var ResponseStatus;\n(function (ResponseStatus) {\n ResponseStatus[\"Pending\"] = \"pending\";\n ResponseStatus[\"Confirmed\"] = \"confirmed\";\n ResponseStatus[\"Rejected\"] = \"rejected\";\n ResponseStatus[\"Unknown\"] = \"unknown\";\n ResponseStatus[\"Waiting\"] = \"waiting\";\n})(ResponseStatus || (ResponseStatus = {}));\nexport var TransactionEvent;\n(function (TransactionEvent) {\n TransactionEvent[\"ClusterAnchoringConfirmation\"] = \"clusterAnchoringConfirmed\";\n TransactionEvent[\"SystemAnchoringConfirmation\"] = \"systemAnchoringConfirmed\";\n TransactionEvent[\"DappConfirmed\"] = \"dappConfirmed\";\n TransactionEvent[\"DappReceived\"] = \"dappReceived\";\n TransactionEvent[\"Signed\"] = \"signed\";\n})(TransactionEvent || (TransactionEvent = {}));\nexport var AnchoringStatus;\n(function (AnchoringStatus) {\n AnchoringStatus[\"NotAnchored\"] = \"notAnchored\";\n AnchoringStatus[\"ClusterAnchored\"] = \"clusterAnchored\";\n AnchoringStatus[\"SystemAnchored\"] = \"systemAnchored\";\n AnchoringStatus[\"FailedAnchoring\"] = \"failedAnchoring\";\n})(AnchoringStatus || (AnchoringStatus = {}));\nexport var ChainConfirmationLevel;\n(function (ChainConfirmationLevel) {\n ChainConfirmationLevel[\"None\"] = \"none\";\n ChainConfirmationLevel[\"Dapp\"] = \"dapp\";\n ChainConfirmationLevel[\"ClusterAnchoring\"] = \"clusterAnchoring\";\n ChainConfirmationLevel[\"SystemAnchoring\"] = \"systemAnchoring\";\n ChainConfirmationLevel[\"EvmNetwork\"] = \"evmNetwork\";\n})(ChainConfirmationLevel || (ChainConfirmationLevel = {}));\nexport var Method;\n(function (Method) {\n Method[\"GET\"] = \"get\";\n Method[\"POST\"] = \"post\";\n})(Method || (Method = {}));\n//# sourceMappingURL=enums.js.map","const shuffleArray = (array) => {\n const shuffledArray = [...array];\n for (let i = shuffledArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];\n }\n return shuffledArray;\n};\nexport const createNodeManager = ({ nodeUrls, useStickyNode = false, unavailableDuration = 5000, }) => {\n const nodes = nodeUrls.map(url => ({\n url,\n whenAvailable: 0,\n isAvailable: true,\n }));\n return {\n nodes,\n stickedNode: null,\n useStickyNode: useStickyNode,\n lastUsedNode: null,\n getAvailableNodes() {\n const shuffledAvailableNodes = shuffleArray(this.nodes.filter((node) => node.isAvailable));\n // set sticky node as the first node, and then shuffle the rest\n if (useStickyNode && this.stickedNode && this.stickedNode.isAvailable) {\n const nodesWithoutSticky = shuffledAvailableNodes.filter(node => node !== this.stickedNode);\n return [this.stickedNode, ...nodesWithoutSticky];\n }\n return shuffledAvailableNodes;\n },\n setStickyNode(node) {\n this.stickedNode = node;\n },\n setUseStickyNode(useSticky) {\n this.useStickyNode = useSticky;\n },\n getNode() {\n const nodes = this.getAvailableNodes();\n if (nodes.length === 0) {\n return null;\n }\n const index = Math.floor(Math.random() * nodes.length);\n const node = nodes[index];\n this.lastUsedNode = node;\n if (!useStickyNode) {\n return node;\n }\n if (!this.stickedNode) {\n this.setStickyNode(node);\n return node;\n }\n this.lastUsedNode = this.stickedNode;\n return this.stickedNode;\n },\n makeAllNodesAvailable() {\n this.nodes = this.nodes.map((node) => {\n return Object.assign(Object.assign({}, node), { isAvailable: true, whenAvailable: 0 });\n });\n },\n makeNodeUnavailable(nodeUrl) {\n if (this.stickedNode && this.stickedNode.url === nodeUrl) {\n this.stickedNode = null;\n }\n const updatedNodes = this.nodes.map((node) => {\n if (node.url === nodeUrl) {\n return Object.assign(Object.assign({}, node), { isAvailable: false, whenAvailable: Date.now() + unavailableDuration });\n }\n return node;\n });\n this.nodes = updatedNodes;\n },\n };\n};\n//# sourceMappingURL=nodeManager.js.map","import { z } from \"zod\";\nexport const BufferSchema = z.union([z.instanceof(Uint8Array), z.instanceof(Buffer)]);\n//# sourceMappingURL=bufferSchema.js.map","import { InvalidTxRidException } from \"../errors\";\nimport { BufferSchema } from \"./bufferSchema\";\nexport const TxRidSchema = BufferSchema.refine(x => x.length === 32, \"Rid must be 32 bytes long\");\nexport const isTxRidValid = (rid, options) => {\n const TxRidValidationContext = TxRidSchema.safeParse(rid);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in TxRidValidationContext;\n if (!hasError) {\n return { success: true };\n }\n const validationError = new InvalidTxRidException(rid);\n if (throwOnError) {\n throw validationError;\n }\n return {\n success: false,\n error: TxRidValidationContext.error,\n message: validationError.message,\n };\n};\n//# sourceMappingURL=txRid.js.map","import { z } from \"zod\";\nimport { TxRidSchema } from \"./txRid\";\nexport const AnchoringTransactionSchema = z.object({\n txRid: z.instanceof(Buffer).superRefine((rid, refCtx) => {\n const txRidValidation = TxRidSchema.safeParse(rid);\n if (!txRidValidation.success)\n txRidValidation.error.issues.forEach(issue => refCtx.addIssue(issue));\n }),\n txData: z.instanceof(Buffer).refine(data => data.length > 0, {\n message: \"txData must be a non-empty Buffer\",\n }),\n txOpIndex: z.number().int().nonnegative({ message: \"txOpIndex must be a non-negative integer\" }),\n});\n//# sourceMappingURL=anchoringTransaction.js.map","import { ensureString, toString } from \"../formatter\";\nexport class MissingTransactionProof extends Error {\n constructor(proofHash, fetchedTxHash) {\n super(`Unable to verify source transaction proof,transaction hash in proof ${toString(proofHash)} does not match hash from fetched transaction ${toString(fetchedTxHash)}`);\n }\n}\nexport class DifferentNumberOfSignersException extends Error {\n constructor(length, comparableLength) {\n super(`Transaction signatures amount ${length} do not match expected amount of signers ${comparableLength}`);\n }\n}\nexport class SignatureException extends Error {\n constructor(signer) {\n super(`Expected signer ${toString(signer)} has not signed source transaction`);\n }\n}\nexport class ProofRidException extends Error {\n constructor() {\n super(\"Unable to verify source transaction proof, got a different transaction from query than we asked for\");\n }\n}\nexport class SystemChainException extends Error {\n constructor(errorMessage) {\n super(`Query to system chain failed with error: ${errorMessage}`);\n }\n}\nexport class ConfirmationProofException extends Error {\n constructor(transactionRid) {\n super(`Unable to fetch confirmation proof for transaction RID: ${ensureString(transactionRid)}.`);\n }\n}\nexport class BlockAnchoringException extends Error {\n constructor() {\n super(`Block is not present in cluster anchoring chain`);\n }\n}\n//# sourceMappingURL=error.js.map","import { z } from \"zod\";\nconst RawGtvSchema = z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.bigint(),\n z.instanceof(Buffer),\n z.array(z.unknown()),\n z.record(z.unknown()),\n]);\nconst DictPairSchema = z.record(RawGtvSchema);\nconst TransactionInfoInBlockResponseSchema = z.object({\n rid: z.string(),\n hash: z.string(),\n data: z.string().optional(),\n});\nconst BlockInfoResponseSchema = z.object({\n rid: z.string(),\n prevBlockRID: z.string(),\n header: z.string(),\n height: z.number(),\n transactions: z.array(TransactionInfoInBlockResponseSchema),\n witness: z.string(),\n witnesses: z.array(z.string()),\n timestamp: z.number(),\n});\nconst TransactionObjectSchema = z.object({\n tx: z.string(),\n});\nconst TransactionsCountSchema = z.object({\n transactionsCount: z.number(),\n});\nconst TransactionConfirmationProofSchema = z.object({\n proof: z.string(),\n});\nconst ConfirmationProofSchema = z.object({\n hash: z.instanceof(Buffer),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n merkleProofTree: RawGtvSchema,\n txIndex: z.number(),\n});\nconst TransactionInfoResponseSchema = z.object({\n blockRID: z.string(),\n blockHeight: z.number(),\n blockHeader: z.string(),\n witness: z.string(),\n timestamp: z.number(),\n txRID: z.string(),\n txHash: z.string(),\n txData: z.string(),\n});\nconst TransactionInfoSchema = z.object({\n blockRid: z.instanceof(Buffer),\n blockHeight: z.number(),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n timestamp: z.number(),\n txRid: z.instanceof(Buffer),\n txHash: z.instanceof(Buffer),\n txData: z.instanceof(Buffer),\n});\nconst RejectedTransactionSchema = z.object({\n txRid: z.instanceof(Buffer),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nconst RejectedTransactionResponseSchema = z.object({\n txRID: z.string(),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nexport function isString(value) {\n const result = z.string().safeParse(value);\n return result.success ? value : null;\n}\nexport function isDictPair(value) {\n const result = DictPairSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRawGtv(value) {\n const result = RawGtvSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponse(value) {\n const result = TransactionInfoInBlockResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponseArray(value) {\n const result = z.array(TransactionInfoInBlockResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponse(value) {\n const result = BlockInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponseArray(value) {\n const result = z.array(BlockInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransaction(value) {\n const result = TransactionObjectSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionsCount(value) {\n const result = TransactionsCountSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionConfirmationProof(value) {\n const result = TransactionConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isConfirmationProof(value) {\n const result = ConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponse(value) {\n const result = TransactionInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponseArray(value) {\n const result = z.array(TransactionInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfo(value) {\n const result = TransactionInfoSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoArray(value) {\n const result = z.array(TransactionInfoSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransaction(value) {\n const result = RejectedTransactionSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionArray(value) {\n const result = z.array(RejectedTransactionSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponse(value) {\n const result = RejectedTransactionResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponseArray(value) {\n const result = z.array(RejectedTransactionResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\n//# sourceMappingURL=requests.js.map","import { serialize } from \"../gtx/gtx\";\n/**\n *\n * Encodes the gtx using ASN.1.\n * @returns the gtx encoded\n */\nexport function encodeTransaction(gtx) {\n return serialize(gtx);\n}\n//# sourceMappingURL=encodeTransaction.js.map","export const MERKLE_HASH_VERSIONS = {\n ONE: 1,\n TWO: 2,\n};\n//# sourceMappingURL=constants.js.map","import { z } from \"zod\";\nimport { MERKLE_HASH_VERSIONS } from \"../../utils/constants\";\nconst MerkleHashSchema = z.object({\n merkle_hash_version: z.number().int().positive(),\n});\nexport const validateMerkleHash = (data) => {\n const result = MerkleHashSchema.safeParse(data);\n if (!result.success) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\");\n return { merkle_hash_version: MERKLE_HASH_VERSIONS.ONE };\n }\n return result.data;\n};\n//# sourceMappingURL=merkleHash.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as logger from \"../logger\";\nimport { decodeValue } from \"../gtx/serialization\";\nimport { Method } from \"./enums\";\nexport function handleRequest(method, path, endpoint, postObject) {\n return __awaiter(this, void 0, void 0, function* () {\n if (method == Method.GET) {\n return yield get(path, endpoint);\n }\n else {\n return yield post(path, endpoint, postObject);\n }\n });\n}\n/**\n * Sends request to get data from a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n */\nfunction get(path, endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`GET URL ${new URL(path, endpoint).href}`);\n try {\n const response = yield fetch(new URL(path, endpoint).href);\n const contentType = response.headers.get(\"Content-Type\");\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n let rspBody = null;\n const error = null;\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/json\")) {\n rspBody = yield response.json();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"text/plain\")) {\n rspBody = yield response.text();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/octet-stream\")) {\n rspBody = yield constructBufferResponseBody(response);\n }\n return createResponseObject(error, response.status, rspBody, transactionTimestamp);\n }\n catch (error) {\n logger.error(error.message);\n return createResponseObject(error, null, null);\n }\n });\n}\n/**\n * Sends request to post data to a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n * @param requestBody request body\n */\nfunction post(path, endpoint, requestBody) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`POST URL ${new URL(path, endpoint).href}`);\n logger.debug(`POST body ${JSON.stringify(requestBody)}`);\n if (Buffer.isBuffer(requestBody)) {\n try {\n const requestOptions = {\n method: \"post\",\n body: requestBody,\n headers: {\n Accept: \"application/octet-stream\",\n \"Content-Type\": \"application/octet-stream\",\n },\n };\n const response = yield fetch(new URL(path, endpoint).href, requestOptions);\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n else {\n try {\n const response = yield fetch(new URL(path, endpoint).href, {\n method: \"post\",\n body: JSON.stringify(requestBody),\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n });\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n });\n}\nfunction constructBufferResponseBody(response) {\n return __awaiter(this, void 0, void 0, function* () {\n const contentType = response.headers.get(\"content-type\");\n if (contentType === \"application/octet-stream\") {\n const responseBuffer = yield response.arrayBuffer();\n const buffer = Buffer.from(responseBuffer);\n return decodeValue(buffer);\n }\n if (contentType === \"application/json\") {\n return yield response.json();\n }\n const responseText = yield response.text();\n return responseText ? responseText : response.statusText;\n });\n}\nfunction createResponseObject(error, statusCode, rspBody, transactionTimestamp) {\n const responseObject = {\n error,\n statusCode,\n rspBody,\n };\n if (transactionTimestamp) {\n responseObject.transactionTimestamp = transactionTimestamp;\n }\n return responseObject;\n}\n//# sourceMappingURL=httpUtil.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { sleep } from \"./utils\";\nimport { handleRequest } from \"./httpUtil\";\nimport * as logger from \"../logger\";\nconst isSuccessfullRequest = (statusCode) => statusCode >= 200 && statusCode < 300;\nconst hasClientError = (statusCode) => statusCode >= 400 && statusCode < 500;\nconst hasServerError = (statusCode) => statusCode >= 500 && statusCode < 600;\nexport function abortOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statuscode => !hasServerError(statuscode),\n });\n });\n}\nexport function tryNextOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statusCode => !hasClientError(statusCode) && !hasServerError(statusCode),\n });\n });\n}\nexport const errorMessages = {\n NO_CONSENSUS: \"Nodes were not able to reach a consensus\",\n};\nfunction calculateBftMajorityThreshold(endpointPoolLength) {\n return endpointPoolLength - (endpointPoolLength - 1) / 3;\n}\nexport function queryMajority({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n // Set up constants\n const bftMajorityThreshold = calculateBftMajorityThreshold(config.endpointPool.length);\n const failureThreshold = config.endpointPool.length - bftMajorityThreshold + 1;\n const { nodeManager } = config;\n const timeout = 15000;\n const availableNodes = nodeManager.getAvailableNodes();\n // If the available nodes are less than bfthMajorityThreshold, set all nodes as reachable again.\n if (availableNodes.length < bftMajorityThreshold) {\n nodeManager.makeAllNodesAvailable();\n }\n const outcomes = [];\n const promises = nodeManager.getAvailableNodes().map(node => {\n return handleRequest(method, path, node.url, postObject)\n .then(response => {\n const { statusCode } = response;\n if (statusCode && isSuccessfullRequest(statusCode)) {\n outcomes.push({ type: \"SUCCESS\", result: response });\n }\n else {\n if (statusCode && hasServerError(statusCode)) {\n nodeManager.makeNodeUnavailable(node.url);\n }\n outcomes.push({ type: \"FAILURE\", result: response });\n }\n return response;\n })\n .catch((error) => {\n outcomes.push({ type: \"ERROR\", result: error });\n return error;\n });\n });\n let remainingPromises = promises;\n // Wait for the necessary majority of outcomes to come back or for the timeout to be reached, whichever comes first.\n for (let i = 0; i < bftMajorityThreshold; i++) {\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n // Evaluate the outcomes\n const successfullOutcomes = outcomes.filter(outcome => outcome.type === \"SUCCESS\");\n const failureOutcomes = outcomes.filter(outcome => outcome.type === \"FAILURE\");\n const errorOutcomes = outcomes.filter(outcome => outcome.type === \"ERROR\");\n // group all of the same responses together into groups and count each groups size\n const groupedSuccessfullResponses = groupResponses(successfullOutcomes);\n // validate the responses\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // Successfull majority response was found\n if (groupedSuccessfullResponses.maxNumberOfEqualResponses() >= bftMajorityThreshold) {\n if (groupedSuccessfullResponses.numberOfDistinctResponses() > 1) {\n logger.warning(`Got disagreeing responses, but could still reach BFT majority`);\n }\n return groupedSuccessfullResponses.majorityResponse();\n }\n // Too many failures or errors to be able to reach a consensus\n // If the number of failures and errors is greater than the failure threshold, return first failure, if any, otherwise throw the first error.\n if ([...failureOutcomes, ...errorOutcomes].length >= failureThreshold) {\n if (failureOutcomes.length > 0) {\n return failureOutcomes[0].result;\n }\n else {\n throw errorOutcomes[0].result;\n }\n }\n // If all nodes have responded without a majority, throw an error.\n if (outcomes.length >= config.endpointPool.length) {\n throw new Error(errorMessages.NO_CONSENSUS);\n }\n // Wait for more one more response to come back. ( we need to set a timeout here)\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n });\n}\nexport function singleEndpoint({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const endpoint = config.nodeManager.getNode();\n if (!endpoint) {\n throw new Error(\"Cannot get endpoint. Node not found!\");\n }\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n if (response) {\n ({ error, statusCode, rspBody, transactionTimestamp } = response);\n }\n const isError = statusCode ? hasServerError(statusCode) || hasClientError(statusCode) : false;\n if (!isError && !error) {\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function retryRequest({ method, path, config, postObject, validateStatusCode, }) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const { nodeManager } = config;\n for (const endpoint of nodeManager.getAvailableNodes()) {\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n error = (_a = response === null || response === void 0 ? void 0 : response.error) !== null && _a !== void 0 ? _a : null;\n statusCode = (_b = response === null || response === void 0 ? void 0 : response.statusCode) !== null && _b !== void 0 ? _b : null;\n rspBody = (_c = response === null || response === void 0 ? void 0 : response.rspBody) !== null && _c !== void 0 ? _c : null;\n transactionTimestamp = response === null || response === void 0 ? void 0 : response.transactionTimestamp;\n const isStatusCodeValid = statusCode ? validateStatusCode(statusCode) : false;\n const isServerError = statusCode ? hasServerError(statusCode) : false;\n if (isStatusCodeValid && !error) {\n // Find a way to have this handled more elegantly in the node manager.\n if (nodeManager.stickedNode !== endpoint) {\n nodeManager.setStickyNode(endpoint);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n if (isServerError) {\n // nodeManager.makeNodeUnavailable(endpoint.url);\n logger.info(`server error on ${endpoint.url}`);\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function racePromisesWithTimeout(promises, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n let remainingPromises = [];\n try {\n const resolvedPromise = yield Promise.race([createTimeoutPromise(timeout), ...promises]);\n const promisesWithState = yield checkStateOfPromises(promises);\n const indexOfpromiseToRemove = promisesWithState.findIndex(p => JSON.stringify(p.value) === JSON.stringify(resolvedPromise));\n // Remove the promise that resolved from the list of promises\n promisesWithState.splice(indexOfpromiseToRemove, 1);\n // Remove the state before returning the promises.\n remainingPromises = promisesWithState.map(p => p.value);\n return remainingPromises;\n }\n catch (error) {\n if (error instanceof Error && error.message === \"Timeout exceeded\") {\n throw error;\n }\n return remainingPromises;\n }\n });\n}\nexport function createTimeoutPromise(timeoutMs) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(\"Timeout exceeded\"));\n }, timeoutMs);\n });\n });\n}\nexport const checkStateOfPromises = (promises) => __awaiter(void 0, void 0, void 0, function* () {\n const promiseList = [];\n const pendingState = { status: \"pending\" };\n for (const p of promises) {\n promiseList.push(yield Promise.race([p, pendingState]).then(value => value === pendingState ? Object.assign(Object.assign({}, pendingState), { value: p }) : { status: \"fulfilled\", value }, reason => ({ status: \"rejected\", value: reason })));\n }\n return promiseList;\n});\nconst stableStringify = (obj) => {\n if (obj && typeof obj === \"object\" && !Array.isArray(obj)) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n }\n return JSON.stringify(obj);\n};\nexport const groupResponses = (responses) => {\n const responseMap = responses.reduce((acc, response) => {\n const key = stableStringify(response.result);\n acc[key] = acc[key]\n ? { response: acc[key].response, count: acc[key].count + 1 }\n : { response, count: 1 };\n return acc;\n }, {});\n const distinctResponses = Object.values(responseMap).sort((a, b) => b.count - a.count);\n // Returns the count of the most common response\n const maxNumberOfEqualResponses = () => {\n return distinctResponses.length > 0 ? distinctResponses[0].count : 0;\n };\n // Returns the number of distinct responses\n const numberOfDistinctResponses = () => {\n return distinctResponses.length;\n };\n // Returns the most common response\n const majorityResponse = () => {\n return distinctResponses[0].response.result;\n };\n return {\n maxNumberOfEqualResponses,\n numberOfDistinctResponses,\n majorityResponse,\n };\n};\n//# sourceMappingURL=failoverStrategies.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { abortOnError, tryNextOnError, singleEndpoint, queryMajority } from \"./failoverStrategies\";\nexport function requestWithFailoverStrategy(method, path, config, postObject, forceSingleEndpoint = false) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (config.failoverStrategy) {\n case FailoverStrategy.AbortOnError:\n return yield abortOnError({ method, path, config, postObject });\n case FailoverStrategy.TryNextOnError:\n return yield tryNextOnError({ method, path, config, postObject });\n case FailoverStrategy.SingleEndpoint:\n return yield singleEndpoint({ method, path, config, postObject });\n case FailoverStrategy.QueryMajority:\n if (forceSingleEndpoint) {\n return yield singleEndpoint({ method, path, config, postObject });\n }\n return yield queryMajority({ method, path, config, postObject });\n default:\n throw new Error(`Unsupported failover strategy: ${config.failoverStrategy}`);\n }\n });\n}\n//# sourceMappingURL=requestWithFailoverStrategy.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as logger from \"../logger\";\nimport { SerializedTransactionFormatException, InvalidTxRidException, TxRejectedError, UnexpectedStatusError, GetBridFromChainException, } from \"./errors\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { BlockchainUrlUndefinedException, DirectoryNodeUrlPoolException, InvalidTransactionFormatException, MissingBlockchainIdentifierError, } from \"./errors\";\nimport { ensureBuffer, toBuffer } from \"../formatter\";\nimport { createClient } from \"./blockchainClient\";\nimport { AnchoringStatus, ChainConfirmationLevel, FailoverStrategy, Method, ResponseStatus, TransactionEvent, } from \"./enums\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { SystemChainException } from \"../ICCF/error\";\nimport { getAnchoringClient } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID } from \"../ICCF/utils\";\nimport { isString } from \"./validation/requests\";\nimport { encodeTransaction } from \"../utils/encodeTransaction\";\nimport { validateMerkleHash } from \"./validation/merkleHash\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function getClientConfigFromSettings(settings) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n return __awaiter(this, void 0, void 0, function* () {\n const nodeUrlPoolToUse = yield getNodeUrlsFromSettings(settings);\n if (nodeUrlPoolToUse === null || nodeUrlPoolToUse.length === 0) {\n const id = (_b = (_a = settings.blockchainRid) !== null && _a !== void 0 ? _a : settings.blockchainIid) !== null && _b !== void 0 ? _b : \"Unknown\";\n throw new BlockchainUrlUndefinedException(id);\n }\n const endpointPool = createEndpointObjects(nodeUrlPoolToUse);\n const nodeManager = createNodeManager({\n nodeUrls: nodeUrlPoolToUse,\n useStickyNode: (_c = settings.useStickyNode) !== null && _c !== void 0 ? _c : false,\n unavailableDuration: (_d = settings.failOverConfig) === null || _d === void 0 ? void 0 : _d.unreachableDuration,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _k;\n if (settings.blockchainRid) {\n return settings.blockchainRid;\n }\n if (settings.blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: settings.blockchainIid,\n merkleHashVersion: (_k = settings.merkleHashVersion) !== null && _k !== void 0 ? _k : 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const directoryChainRid = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _l;\n if (settings.directoryChainRid) {\n return settings.directoryChainRid;\n }\n const directoryChainIid = 0;\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: directoryChainIid,\n merkleHashVersion: (_l = settings.merkleHashVersion) !== null && _l !== void 0 ? _l : 0,\n });\n }))();\n return {\n endpointPool,\n nodeManager: nodeManager,\n blockchainRid: blockchainRidToUse,\n merkleHashVersion: (_e = settings.merkleHashVersion) !== null && _e !== void 0 ? _e : 0,\n dappStatusPolling: setStatusPolling(settings.dappStatusPolling),\n clusterAnchoringStatusPolling: setStatusPolling(settings.clusterAnchoringStatusPolling),\n systemAnchoringStatusPolling: setStatusPolling(settings.systemAnchoringStatusPolling),\n failoverStrategy: ((_f = settings.failOverConfig) === null || _f === void 0 ? void 0 : _f.strategy) || defaultFailoverConfig.strategy,\n attemptsPerEndpoint: ((_g = settings.failOverConfig) === null || _g === void 0 ? void 0 : _g.attemptsPerEndpoint) || defaultFailoverConfig.attemptsPerEndpoint,\n attemptInterval: ((_h = settings.failOverConfig) === null || _h === void 0 ? void 0 : _h.attemptInterval) || defaultFailoverConfig.attemptInterval,\n unreachableDuration: ((_j = settings.failOverConfig) === null || _j === void 0 ? void 0 : _j.unreachableDuration) || defaultFailoverConfig.unreachableDuration,\n directoryChainRid: settings.directoryChainRid || directoryChainRid,\n };\n });\n}\nexport function getMerkleHashVersionFromDapp(config) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield requestWithFailoverStrategy(Method.GET, `/config/${config.blockchainRid}/features`, config);\n const validatedResponse = validateMerkleHash(response.rspBody);\n return validatedResponse.merkle_hash_version;\n }\n catch (error) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\", error);\n return MERKLE_HASH_VERSIONS.ONE;\n }\n });\n}\nexport function validTxRid(txRID) {\n if (txRID.length != 32) {\n const error = new InvalidTxRidException(txRID);\n logger.error(error.toString());\n return false;\n }\n return true;\n}\nexport function nodeDiscovery({ nodeManager, directoryEndpointPool, failOverConfig, blockchainRid, blockchainIid, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (directoryEndpointPool.length === 0) {\n throw new DirectoryNodeUrlPoolException();\n }\n if (!blockchainRid && blockchainIid === undefined) {\n throw new MissingBlockchainIdentifierError();\n }\n const directoryIid = 0;\n const directoryBRID = yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: directoryIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n if (blockchainRid) {\n return blockchainRid;\n }\n if (blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: blockchainIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const D1Client = yield createClient({\n nodeUrlPool: getUrlsFromEndpoints(directoryEndpointPool),\n blockchainRid: directoryBRID,\n merkleHashVersion: 0,\n });\n return yield getBlockchainApiUrls(D1Client, ensureBuffer(blockchainRidToUse));\n });\n}\nexport function getBlockchainApiUrls(directoryClient, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const queryObject = {\n name: \"cm_get_blockchain_api_urls\",\n args: { blockchain_rid: blockchainRid },\n };\n return yield directoryClient.query(queryObject);\n });\n}\nexport function convertToRellOperation(operations) {\n return operations.map(operation => {\n var _a;\n return {\n opName: operation.name,\n args: (_a = operation.args) !== null && _a !== void 0 ? _a : [],\n };\n });\n}\nexport function getSerializedGTX(gtx) {\n const gtxBytes = encodeTransaction(gtx);\n if (!Buffer.isBuffer(gtxBytes)) {\n throw new SerializedTransactionFormatException();\n }\n return gtxBytes;\n}\nexport function getGTXFromBufferOrTransactionOrOperation(transaction, blockchainRid) {\n if (Buffer.isBuffer(transaction)) {\n return gtxTool.deserialize(transaction);\n }\n else if (\"operations\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation(transaction.operations),\n signers: transaction.signers,\n signatures: [],\n };\n }\n else if (\"name\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation([transaction]),\n signers: [],\n signatures: [],\n };\n }\n else {\n throw new InvalidTransactionFormatException();\n }\n}\nexport const callbackPromiseBuilder = (reject, resolve, callback) => {\n return (error, result) => {\n var _a;\n if (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(null, (_a = result) !== null && _a !== void 0 ? _a : null);\n resolve(result !== null && result !== void 0 ? result : null);\n }\n };\n};\nexport const handlePostResponsePromisified = (error, statusCode, rspBody) => {\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, rspBody, _error => {\n if (_error) {\n reject(_error);\n }\n else {\n resolve();\n }\n });\n });\n};\nfunction ensureArray(input) {\n if (typeof input === \"string\") {\n return [input];\n }\n return input;\n}\nexport const formatTransactionInfoResponse = (transactionInfoResponse) => {\n return {\n blockRid: toBuffer(transactionInfoResponse.blockRID),\n blockHeight: transactionInfoResponse.blockHeight,\n blockHeader: toBuffer(transactionInfoResponse.blockHeader),\n witness: toBuffer(transactionInfoResponse.witness),\n timestamp: transactionInfoResponse.timestamp,\n txRid: toBuffer(transactionInfoResponse.txRID),\n txHash: toBuffer(transactionInfoResponse.txHash),\n txData: toBuffer(transactionInfoResponse.txData),\n };\n};\nexport const formatBlockInfoResponse = (blockInfoResponse) => {\n return {\n rid: toBuffer(blockInfoResponse.rid),\n prevBlockRid: toBuffer(blockInfoResponse.prevBlockRID),\n header: toBuffer(blockInfoResponse.header),\n transactions: blockInfoResponse.transactions.map(formatTransaction),\n height: blockInfoResponse.height,\n witness: toBuffer(blockInfoResponse.witness),\n witnesses: blockInfoResponse.witnesses.map(witness => {\n return toBuffer(witness);\n }),\n timestamp: blockInfoResponse.timestamp,\n };\n};\nconst formatTransaction = (transaction) => {\n const formattedTransaction = {\n rid: toBuffer(transaction.rid),\n hash: toBuffer(transaction.hash),\n };\n if (transaction.data !== undefined) {\n formattedTransaction.data = toBuffer(transaction.data);\n }\n return formattedTransaction;\n};\nexport function formatRejectedTransactionFromResponse(rejectedTransactionResponse) {\n return {\n txRid: toBuffer(rejectedTransactionResponse.txRID),\n rejectReason: rejectedTransactionResponse.rejectReason,\n rejectTimestamp: rejectedTransactionResponse.rejectTimestamp,\n };\n}\nexport const isKeyPair = (keypair) => {\n return (typeof keypair === \"object\" &&\n keypair !== null &&\n \"privKey\" in keypair &&\n \"pubKey\" in keypair &&\n keypair.privKey instanceof Buffer &&\n keypair.pubKey instanceof Buffer);\n};\nfunction getNodeUrlsFromSettings(settings) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (settings.directoryNodeUrlPool) {\n // If directoryNodeUrlPool is provided, use nodeDiscovery\n const nodeManager = createNodeManager({\n nodeUrls: ensureArray(settings.directoryNodeUrlPool),\n unavailableDuration: (_a = settings.failOverConfig) === null || _a === void 0 ? void 0 : _a.unreachableDuration,\n });\n const discoveredNodes = yield nodeDiscovery({\n nodeManager,\n directoryEndpointPool: createEndpointObjects(ensureArray(settings.directoryNodeUrlPool)),\n failOverConfig: settings.failOverConfig,\n blockchainRid: settings.blockchainRid,\n blockchainIid: settings.blockchainIid,\n });\n return discoveredNodes;\n }\n else if (typeof settings.nodeUrlPool === \"string\") {\n // If nodeUrlPool is a string, convert it to an array\n return [settings.nodeUrlPool];\n }\n else if (Array.isArray(settings.nodeUrlPool)) {\n // If nodeUrlPool is already an array, use it as-is\n return settings.nodeUrlPool;\n }\n else {\n // Default to an empty array if no valid configuration is provided\n return [];\n }\n });\n}\nexport function getSystemClient(directoryNodeUrlPool, directoryChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield createClient({\n directoryNodeUrlPool,\n blockchainRid: directoryChainRid,\n merkleHashVersion: 0,\n });\n });\n}\nexport function getSystemAnchoringChain(directoryClient) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const queryObject = {\n name: \"cm_get_system_anchoring_chain\",\n };\n const systemAnchoringChain = yield directoryClient.query(queryObject);\n if (!systemAnchoringChain) {\n throw new SystemChainException(\"Directory chain client must be provided.\");\n }\n return systemAnchoringChain;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport const defaultFailoverConfig = {\n strategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 500,\n unreachableDuration: 30000,\n};\nexport const createEndpointObjects = (endpointPoolUrls) => {\n const endpoints = endpointPoolUrls.map(endpointUrl => {\n return { url: endpointUrl, whenAvailable: 0 };\n });\n return endpoints;\n};\nexport const getUrlsFromEndpoints = (endpointPool) => {\n return endpointPool.map(endpoint => endpoint.url);\n};\nexport function awaitDappConfirmation(txRID, dappStatusPolling, getTransactionStatus) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let lastKnownResult;\n for (let i = 0; i < dappStatusPolling.count; i++) {\n lastKnownResult = yield getTransactionStatus(txRID);\n if (lastKnownResult.status === ResponseStatus.Confirmed) {\n return lastKnownResult;\n }\n else if (lastKnownResult.status === ResponseStatus.Rejected) {\n throw new TxRejectedError((_a = lastKnownResult.rejectReason) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(dappStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return lastKnownResult;\n });\n}\nexport function awaitClusterAnchoringChainConfirmation(txRID, clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let clusterAnchoringConfirmation;\n for (let i = 0; i < clusterAnchoringStatusPolling.count; i++) {\n clusterAnchoringConfirmation = yield getClusterAnchoringTransactionConfirmation(txRID);\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(clusterAnchoringConfirmation);\n if (anchoringTransactionValidaiton.success) {\n return {\n status: AnchoringStatus.ClusterAnchored,\n clusterAnchoredTx: anchoringTransactionValidaiton.data,\n };\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError((_a = AnchoringStatus.FailedAnchoring) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(clusterAnchoringStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return clusterAnchoringConfirmation;\n });\n}\nexport function handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, dappStatusPolling, getTransactionStatus, client) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const transactionReceipt = {\n status: ResponseStatus.Pending,\n statusCode: null,\n transactionRid: transactionRid,\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n promiEvent.emit(TransactionEvent.DappReceived, transactionReceipt);\n if (doStatusPolling === false || confirmationLevel === ChainConfirmationLevel.None) {\n return transactionReceipt;\n }\n const dappConfirmationStatus = yield awaitDappConfirmation(transactionRid, dappStatusPolling, getTransactionStatus);\n transactionReceipt.statusCode = dappConfirmationStatus.statusCode;\n transactionReceipt.status = dappConfirmationStatus.status;\n transactionReceipt.node = (_b = client.config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url;\n promiEvent.emit(TransactionEvent.DappConfirmed, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.Dapp) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBrid, getClusterAnchoringTransactionConfirmation, getSystemAnchoringTransactionConfirmation) {\n return __awaiter(this, void 0, void 0, function* () {\n const clusterAnchoringChainConfirmation = yield awaitClusterAnchoringChainConfirmation(transactionReceipt.transactionRid, statusPollingConfig.clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation);\n transactionReceipt.status = clusterAnchoringChainConfirmation.status;\n transactionReceipt.clusterAnchoredTx = clusterAnchoringChainConfirmation.clusterAnchoredTx;\n transactionReceipt.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n promiEvent.emit(TransactionEvent.ClusterAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.ClusterAnchoring) {\n return transactionReceipt;\n }\n const systemAnchoringConfirmation = yield getSystemAnchoringTransactionConfirmation(clusterAnchoringChainConfirmation.clusterAnchoredTx.txRid, anchoringClient, systemAnchoringChainBrid);\n if (!systemAnchoringConfirmation) {\n return transactionReceipt;\n }\n transactionReceipt.status = AnchoringStatus.SystemAnchored;\n transactionReceipt.systemAnchoredTx = systemAnchoringConfirmation;\n transactionReceipt.systemAnchoringClientBrid = systemAnchoringChainBrid;\n promiEvent.emit(TransactionEvent.SystemAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.SystemAnchoring) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function getAnchoringClientAndSystemChainRid(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const directoryClient = yield getSystemClient(getUrlsFromEndpoints(client.config.endpointPool), client.config.directoryChainRid);\n const anchoringClient = yield getAnchoringClient(directoryClient, client.config.blockchainRid);\n const systemAnchoringChainRidBuffer = yield getSystemAnchoringChain(directoryClient);\n const systemAnchoringChainBridString = systemAnchoringChainRidBuffer.toString(\"hex\");\n return { anchoringClient, systemAnchoringChainBridString };\n });\n}\nexport function getSystemAnchoringTransaction(dappClientEndpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, systemAnchoringStatusPolling, merkleHashVersion) {\n return __awaiter(this, void 0, void 0, function* () {\n const systemAnchoringChainClient = yield getSystemClient(getUrlsFromEndpoints(dappClientEndpointPool), systemAnchoringChainRid);\n const clusterAnchoringProof = yield anchoringClient.getConfirmationProof(anchoredTxRid);\n const clusterBlockRid = calculateBlockRID(clusterAnchoringProof, merkleHashVersion);\n const systemAnchoringTransactionConfirmation = yield awaitGetAnchoringTransactionForBlockRid(systemAnchoringChainClient, toBuffer(anchoringClient.config.blockchainRid), clusterBlockRid, systemAnchoringStatusPolling);\n const systemAnchoringTransactionValidation = AnchoringTransactionSchema.safeParse(systemAnchoringTransactionConfirmation);\n if (!systemAnchoringTransactionValidation.success) {\n return null;\n }\n return systemAnchoringTransactionValidation.data;\n });\n}\n/**\n * Should be used to configure the `IClient` `ClientConfig` (config) properties\n * `dappStatusPolling`, `clusterAnchoringStatusPolling` and `systemAnchoringStatusPolling` with\n * the corresponding status polling configuration `interval` and `status`.\n * If the values are not provided, they do default to `500` for `interval` and `20` for `count`\n *\n * @param statusPolling - An optional partial configuration object, that can set the status polling interval and count properties\n * @returns - Returns a complete `StatusPolling` configuration object, with default values for any missing properties\n * of the provided partial configuration\n */\nexport function setStatusPolling(statusPolling) {\n var _a, _b;\n return {\n interval: (_a = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.interval) !== null && _a !== void 0 ? _a : 500,\n count: (_b = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.count) !== null && _b !== void 0 ? _b : 20,\n };\n}\nexport function linkPromiEvents(event1, event2) {\n const transactionEvents = Object.values(TransactionEvent).filter((event) => typeof event === \"string\");\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const forwardEvent = (eventName) => (receipt) => event2.emit(eventName, receipt);\n for (const eventName of transactionEvents) {\n event1.on(eventName, forwardEvent(eventName));\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handleGetResponse(error, statusCode, responseObject, callback) {\n try {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n if (error) {\n return callback(error, null);\n }\n if (statusCode !== 200) {\n return callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), null);\n }\n return callback(null, responseObject);\n }\n catch (error) {\n callback(error, null);\n logger.error(`client.handleGetResponse(): Failed to call the callback function. ${error}`);\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handlePostResponse(error, statusCode, responseObject, callback) {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n try {\n if (error) {\n logger.error(`In client post(). ${error}`);\n callback(error, null);\n }\n else if (statusCode != 200) {\n let errorMessage = `Unexpected status code from server. Code: ${statusCode}.`;\n if (responseObjectPrintable) {\n errorMessage += ` Message: ${responseObjectPrintable}.`;\n }\n logger.error(errorMessage);\n callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), responseObject);\n }\n else {\n logger.info(`Calling responseCallback with responseObject: ${responseObjectPrintable}`);\n callback(null, responseObject);\n }\n }\n catch (error) {\n logger.error(`client.handlePostResponse(): Failed to call callback function ${error}`);\n }\n}\nexport function getBlockchainRidFromIid({ endpointPool, chainId, failOverConfig = {}, nodeManager, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedFailOverConfig = Object.assign(Object.assign({}, defaultFailoverConfig), failOverConfig);\n const config = {\n endpointPool,\n nodeManager,\n dappStatusPolling: setStatusPolling(),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: mergedFailOverConfig.strategy,\n attemptsPerEndpoint: mergedFailOverConfig.attemptsPerEndpoint,\n attemptInterval: mergedFailOverConfig.attemptInterval,\n unreachableDuration: mergedFailOverConfig.unreachableDuration,\n merkleHashVersion: 0,\n };\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/brid/iid_${chainId}`, config);\n const blockchainRid = isString(rspBody);\n if (!blockchainRid) {\n throw error;\n }\n if (error) {\n throw new GetBridFromChainException(chainId, error.message);\n }\n else if (statusCode !== 200) {\n throw new GetBridFromChainException(chainId, blockchainRid);\n }\n return blockchainRid;\n });\n}\nexport const sleep = (ms) => new Promise(r => setTimeout(r, ms));\nexport function convertToPrintable(responseObject) {\n if (typeof responseObject === \"bigint\") {\n return `${responseObject}n`;\n }\n else if (typeof responseObject === \"object\") {\n return JSON.stringify(responseObject, (key, value) => typeof value === \"bigint\" ? `${value}n` : value);\n }\n else {\n return String(responseObject);\n }\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { TxRejectedError } from \"../blockchainClient/errors\";\nimport { sleep } from \"../blockchainClient/utils\";\nimport { AnchoringTransactionSchema } from \"../blockchainClient/validation/anchoringTransaction\";\nimport { checkDigestSignature } from \"../encryption/encryption\";\nimport { ensureBuffer } from \"../formatter\";\nimport { gtvHash } from \"../gtv\";\nimport { getDigestToSign, rawGtvToGtx } from \"../gtx/gtx\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport { DifferentNumberOfSignersException, MissingTransactionProof, ProofRidException, SignatureException, SystemChainException, } from \"./error\";\nexport function getClusterOfBlockchain(client, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterName = yield client.query({\n name: \"cm_get_blockchain_cluster\",\n args: { brid: blockchainRid },\n });\n return clusterName;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function getClusterInfo(client, name) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterInfo = yield client.query({\n name: \"cm_get_cluster_info\",\n args: { name },\n });\n return clusterInfo;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function awaitGetAnchoringTransactionForBlockRid(client, blockchainRid, blockRid, systemAnchoringStatusPolling) {\n return __awaiter(this, void 0, void 0, function* () {\n let anchoringTransactionResponse = null;\n for (let i = 0; i < systemAnchoringStatusPolling.count; i++) {\n anchoringTransactionResponse = yield getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid);\n if (anchoringTransactionResponse) {\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(anchoringTransactionResponse);\n if (anchoringTransactionValidaiton.success) {\n return anchoringTransactionValidaiton.data;\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError(\"Invalid anchoring transaction format\");\n }\n }\n yield sleep(systemAnchoringStatusPolling.interval);\n }\n return anchoringTransactionResponse;\n });\n}\nexport function getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const anchoringTxForBlockRid = yield client.query({\n name: \"get_anchoring_transaction_for_block_rid\",\n args: { blockchain_rid: blockchainRid, block_rid: blockRid },\n });\n if (!anchoringTxForBlockRid)\n return null;\n return convertToAnchoringTransaction(anchoringTxForBlockRid);\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function convertToAnchoringTransaction(responseTx) {\n const { tx_rid, tx_data, tx_op_index } = responseTx;\n return {\n txRid: tx_rid,\n txData: tx_data,\n txOpIndex: tx_op_index,\n };\n}\nexport function calculateBlockRID(decodedTxProof, merkleHashVersion) {\n const sourceBlockHeader = decodedTxProof.blockHeader;\n if (!sourceBlockHeader) {\n throw new Error(\"Failed to get blockHeader from confirmation proof\");\n }\n const decodeSourceBlockRid = decodeValue(sourceBlockHeader);\n return gtvHash(decodeSourceBlockRid, merkleHashVersion);\n}\n// fetch tx from txRID and verifies with secp256k1.ecdsaVerify that txRID and signer creates signatures that are on the blockchain transaction\nexport function fetchAndVerifyTransaction(sourceClient, txToProveRID, proofHash, txToProveSigners) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const rawTx = yield sourceClient.getTransaction(txToProveRID);\n const txGtv = decodeValue(rawTx);\n const fetchedTxHash = gtvHash(txGtv, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(fetchedTxHash, proofHash)) {\n // We received another hash for tx RID than what was included in proof\n // Possibly rouge or faulty node(s). Anyway, we need to give up.\n throw new MissingTransactionProof(proofHash, fetchedTxHash);\n }\n const fetchedTx = rawGtvToGtx(txGtv);\n if (txToProveSigners.length != ((_a = fetchedTx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n throw new DifferentNumberOfSignersException((_c = (_b = fetchedTx.signatures) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, txToProveSigners.length);\n }\n const txRID = getDigestToSign(fetchedTx, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(txRID, ensureBuffer(txToProveRID))) {\n throw new ProofRidException();\n }\n for (const signer of txToProveSigners) {\n let hasSignature = false;\n for (const signature of fetchedTx.signatures) {\n // verify that txRID (hash of gtxBody) signed by signers equals the signatures from network\n if (checkDigestSignature(txRID, signer, signature)) {\n hasSignature = true;\n break;\n }\n }\n if (!hasSignature)\n throw new SignatureException(signer);\n }\n return { verifiedTx: fetchedTx, verifiedTxHash: fetchedTxHash };\n });\n}\nexport function composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, anchoringTx, anchoringProof, isNetwork = true) {\n let operationArgs;\n operationArgs = {\n sourceBlockchainRid: ensureBuffer(sourceBlockchainRid),\n transactionHash: verifiedTxHash,\n transactionProof: encodeValue(txProof),\n };\n if (isNetwork) {\n operationArgs = Object.assign(Object.assign({}, operationArgs), { transactionData: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txData, transactionIndex: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txOpIndex, anchoringProof: anchoringProof && encodeValue(anchoringProof) });\n }\n return {\n operations: [\n {\n name: \"iccf_proof\",\n args: Object.values(operationArgs),\n },\n ],\n signers: iccfTxSigners,\n };\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createClient } from \"../blockchainClient/blockchainClient\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID, composeProofTransactionObject, fetchAndVerifyTransaction, getClusterInfo, getClusterOfBlockchain, } from \"./utils\";\nimport { toString, toBuffer, ensureString, ensureBuffer } from \"../formatter\";\nimport { BlockAnchoringException, ConfirmationProofException } from \"./error\";\nimport { getUrlsFromEndpoints } from \"../blockchainClient/utils\";\nimport { FailoverStrategy } from \"../blockchainClient/enums\";\n/**\n * Creates an ICCF (Inter-Chain Communication Framework) proof transaction.\n * This function generates a proof that a specific transaction has occurred on the source blockchain\n * and constructs an ICCF proof transaction that can be posted to the target blockchain.\n *\n * @param {IClient} directoryClient - The client configured to communicate with the management chain.\n * @param {BufferId} txToProveRid - The RID of the transaction to be proven.\n * @param {Buffer} txToProveHash - The hash of the transaction to be proven.\n * @param {PubKey[]} txToProveSigners - An array of public keys representing signers of the transaction to be proven.\n * @param {BufferId} sourceBlockchainRid - The RID of the source blockchain.\n * @param {BufferId} targetBlockchainRid - The RID of the target blockchain.\n * @param {PubKey[]} iccfTxSigners - An array of public keys representing signers of the ICCF proof transaction (optional, default: []).\n * @param {boolean} forceIntraNetworkIccfOperation - Whether to force the ICCF operation to be performed within the same network (optional, default: false).\n * @param {number} merkleHashVersion - The version of the merkle hash to use.\n * @param {string} nodeIdentifierURL - The URL of the node to use.\n * @returns {Promise<IccfProof>} A promise that resolves to an ICCF proof object containing the ICCF proof transaction.\n */\nexport function createIccfProofTx(directoryClient, txToProveRid, txToProveHash, txToProveSigners, sourceBlockchainRid, targetBlockchainRid, iccfTxSigners = [], forceIntraNetworkIccfOperation = false, merkleHashVersion, nodeIdentifierURL) {\n return __awaiter(this, void 0, void 0, function* () {\n let clientConfiguredToSource;\n if (!nodeIdentifierURL) {\n clientConfiguredToSource = yield createClient({\n directoryNodeUrlPool: getUrlsFromEndpoints(directoryClient.config.endpointPool),\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n else {\n clientConfiguredToSource = yield createClient({\n nodeUrlPool: nodeIdentifierURL,\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n const txProof = yield clientConfiguredToSource.getConfirmationProof(txToProveRid);\n if (!txProof || !txProof.hash) {\n throw new ConfirmationProofException(txToProveRid);\n }\n const proofHash = txProof.hash;\n const { verifiedTx, verifiedTxHash } = !txToProveHash.equals(proofHash)\n ? yield fetchAndVerifyTransaction(clientConfiguredToSource, txToProveRid, proofHash, txToProveSigners)\n : { verifiedTx: null, verifiedTxHash: txToProveHash };\n const sourceCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(sourceBlockchainRid));\n const targetCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(targetBlockchainRid));\n if (!forceIntraNetworkIccfOperation && sourceCluster === targetCluster) {\n // intra-cluster\n const intraClusterProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, undefined, undefined, false);\n return { iccfTx: intraClusterProofTx };\n }\n else {\n // intra-network\n const systemClientUsingStickyNode = Object.assign(Object.assign({}, directoryClient), { config: Object.assign(Object.assign({}, directoryClient.config), { failoverStrategy: FailoverStrategy.SingleEndpoint }) });\n const anchoringClient = yield getAnchoringClient(systemClientUsingStickyNode, sourceBlockchainRid, sourceCluster);\n const clusterAnchoredTx = yield getBlockAnchoringTransaction(clientConfiguredToSource, anchoringClient, undefined, txProof);\n if (!clusterAnchoredTx) {\n throw new BlockAnchoringException();\n }\n const anchoringProof = yield anchoringClient.getConfirmationProof(clusterAnchoredTx.txRid);\n const intraNetworkProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, clusterAnchoredTx, anchoringProof);\n return { iccfTx: intraNetworkProofTx, verifiedTx };\n }\n });\n}\n/**\n * Checks whether a given transaction is included in the cluster anchoring chain and returns the\n * block anchoring transaction. If `txProof` is not provided, it fetches the confirmation proof\n * using the `sourceClient`.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to the anchored transaction response object.\n */\nexport function getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!txRid && !txProof) {\n throw Error(\"Missing a txRid or TxProof\");\n }\n const confirmationProof = txProof !== null && txProof !== void 0 ? txProof : (txRid && (yield sourceClient.getConfirmationProof(txRid)));\n if (!confirmationProof) {\n throw Error(\"Confirmation proof not found\");\n }\n const blockRid = calculateBlockRID(confirmationProof, sourceClient.config.merkleHashVersion);\n const blockchainRid = sourceClient.config.blockchainRid;\n const anchoringTxResponse = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, toBuffer(blockchainRid), blockRid, sourceClient.config.clusterAnchoringStatusPolling);\n return anchoringTxResponse;\n });\n}\n/**\n * Checks whether a given transaction is included in the anchoring blockchain.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to `true` if the transaction is anchored, `false` otherwise.\n */\nexport function isBlockAnchored(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n return !!(yield getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof));\n });\n}\n/**\n * Gets a client configured for the cluster anchoring blockchain of a cluster. Takes a specific\n * cluster name or blockchain RID to determine the cluster.\n * @param client - The client configured to communicate with the management chain.\n * @param dappBlockchainRid - (Optional) The RID of a blockchain which anchoring wants to be checked.\n * @param cluster - (Optional) The cluster of interest.\n * @returns A Promise that resolves to the client configured to a cluster anchoring chain.\n */\nexport function getAnchoringClient(client, dappBlockchainRid, cluster) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dappBlockchainRid && !cluster) {\n throw Error(\"Missing a dapp blockchainRid or cluster name\");\n }\n const sourceCluster = cluster !== null && cluster !== void 0 ? cluster : (dappBlockchainRid && (yield getClusterOfBlockchain(client, ensureBuffer(dappBlockchainRid))));\n if (!sourceCluster) {\n throw Error(\"No cluster could be found\");\n }\n const sourceClusterInfo = yield getClusterInfo(client, sourceCluster);\n if (!sourceClusterInfo || !sourceClusterInfo.anchoring_chain) {\n throw Error(\"Cluster info could not be found\");\n }\n const networkSettings = Object.assign(Object.assign({}, client.config), { directoryNodeUrlPool: getUrlsFromEndpoints(client.config.endpointPool), blockchainRid: toString(sourceClusterInfo.anchoring_chain), merkleHashVersion: 0 });\n const clientConfiguredToAnchoringchain = yield createClient(networkSettings);\n return clientConfiguredToAnchoringchain;\n });\n}\n//# sourceMappingURL=IccfProofTxMaterialBuilder.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nimport { EventEmitter } from \"events\";\nexport class Web3EventEmitter {\n constructor() {\n this._emitter = new EventEmitter();\n }\n on(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.on(eventName, fn);\n }\n once(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.once(eventName, fn);\n }\n off(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.off(eventName, fn);\n }\n emit(eventName, params) {\n this._emitter.emit(eventName, params);\n }\n listenerCount(eventName) {\n return this._emitter.listenerCount(eventName);\n }\n listeners(eventName) {\n return this._emitter.listeners(eventName);\n }\n eventNames() {\n return this._emitter.eventNames();\n }\n removeAllListeners() {\n this._emitter.removeAllListeners();\n }\n setMaxListenerWarningThreshold(maxListenersWarningThreshold) {\n this._emitter.setMaxListeners(maxListenersWarningThreshold);\n }\n getMaxListeners() {\n return this._emitter.getMaxListeners();\n }\n}\n//# sourceMappingURL=promiEventEmitter.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { Web3EventEmitter, } from \"./promiEventEmitter\";\nexport class Web3PromiEvent extends Web3EventEmitter {\n constructor(executor) {\n super();\n // public tag to treat object as promise by different libs\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n this[_a] = \"Promise\";\n this._promise = new Promise(executor);\n }\n then(onfulfilled, onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.then(onfulfilled, onrejected);\n });\n }\n catch(onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.catch(onrejected);\n });\n }\n finally(onfinally) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.finally(onfinally);\n });\n }\n on(eventName, fn) {\n super.on(eventName, fn);\n return this;\n }\n once(eventName, fn) {\n super.once(eventName, fn);\n return this;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=promiEvents.js.map","import { z } from \"zod\";\nconst WRONG_STRING_LENGTH = \"wrong string length\";\nexport const BlockIdentifierSchema = z.union([\n z.string().refine(val => /^[0-9a-fA-F]{64}$/.test(val), WRONG_STRING_LENGTH),\n z.number(),\n]);\nexport const isBlockIdentifierValid = (blockIdentifier, options) => {\n const ctx = BlockIdentifierSchema.safeParse(blockIdentifier);\n const { success } = ctx;\n const hasError = \"error\" in ctx;\n const { throwOnError = false } = options || {};\n if (!hasError) {\n return { success };\n }\n const { error } = ctx;\n const isInvalidInputType = error.issues.some(({ code }) => code === \"invalid_union\");\n const isInvalidStringLength = error.issues.some(({ message }) => message === WRONG_STRING_LENGTH);\n const message = (() => {\n if (isInvalidInputType) {\n return `Invalid \"blockIdentifier\" type. Expected string or number, but received ${typeof blockIdentifier}.`;\n }\n if (isInvalidStringLength) {\n return \"Parameter 'blockIdentifier' does not have the correct format (64-character hexadecimal string).\";\n }\n return error.issues.map(issue => issue.message).join(\", \");\n })();\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success,\n error,\n message: error.issues.map(issue => issue.message).join(\", \"),\n };\n};\n//# sourceMappingURL=blockIdentifier.js.map","import { z } from \"zod\";\nimport { FailoverStrategy } from \"../enums\";\nimport { MissingBlockchainIdentifierError, MissingNodeUrlError } from \"../errors\";\nconst IdentifierSchema = z.union([\n z.object({\n blockchainRid: z.undefined(),\n blockchainIid: z.number(),\n }),\n z.object({\n blockchainRid: z.string(),\n blockchainIid: z.undefined(),\n }),\n]);\nconst NodeUrlSchema = z.union([\n z.object({\n nodeUrlPool: z.union([z.string(), z.array(z.string())]),\n directoryNodeUrlPool: z.undefined(),\n }),\n z.object({\n nodeUrlPool: z.undefined(),\n directoryNodeUrlPool: z.union([z.string(), z.array(z.string())]),\n }),\n]);\nconst RestNetworkSettingsSchema = z.object({\n statusPollingInterval: z.number().optional(),\n statusPollingCount: z.number().optional(),\n failOverConfig: z\n .object({\n strategy: z.nativeEnum(FailoverStrategy).optional(),\n attemptsPerEndpoint: z.number().optional(),\n attemptInterval: z.number().optional(),\n unreachableDuration: z.number().optional(),\n })\n .optional(),\n});\nexport const validateBlockChainIdentifier = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const identifierValidationContext = IdentifierSchema.safeParse(networkSettings);\n if (\"error\" in identifierValidationContext) {\n const missingBlockchainIdentifierError = new MissingBlockchainIdentifierError();\n if (throwOnError) {\n throw missingBlockchainIdentifierError;\n }\n return {\n success: identifierValidationContext.success,\n error: identifierValidationContext.error,\n message: missingBlockchainIdentifierError.message,\n };\n }\n return { success: true };\n};\nconst validateNodeUrl = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const nodeUrlValidationContext = NodeUrlSchema.safeParse(networkSettings);\n if (\"error\" in nodeUrlValidationContext) {\n const missingNodeUrlError = new MissingNodeUrlError();\n if (throwOnError) {\n throw missingNodeUrlError;\n }\n return {\n success: nodeUrlValidationContext.success,\n error: nodeUrlValidationContext.error,\n message: missingNodeUrlError.message,\n };\n }\n return { success: true };\n};\nconst validateRestNetworkSettings = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const restNetworkSettingsValidationContext = RestNetworkSettingsSchema.safeParse(networkSettings);\n if (\"error\" in restNetworkSettingsValidationContext) {\n const { error: { issues }, } = restNetworkSettingsValidationContext;\n const errorMessage = issues.map(({ message, path }) => `${path[0]}: ${message}`).join(\", \");\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n return {\n success: restNetworkSettingsValidationContext.success,\n error: restNetworkSettingsValidationContext.error,\n message: errorMessage,\n };\n }\n return { success: true };\n};\nexport const isNetworkSettingValid = (networkSettings, options) => {\n const identifierValidationContext = validateBlockChainIdentifier(networkSettings, options);\n if (\"error\" in identifierValidationContext) {\n return identifierValidationContext;\n }\n const nodeUrlValidationContext = validateNodeUrl(networkSettings, options);\n if (\"error\" in nodeUrlValidationContext) {\n return nodeUrlValidationContext;\n }\n const restNetworkSettingsValidationContext = validateRestNetworkSettings(networkSettings, options);\n if (\"error\" in restNetworkSettingsValidationContext) {\n return restNetworkSettingsValidationContext;\n }\n return { success: true };\n};\n//# sourceMappingURL=networkSettings.js.map","import { z } from \"zod\";\nimport { BufferSchema } from \"./bufferSchema\";\nconst KeyPairSchema = z.object({\n privKey: BufferSchema,\n pubKey: BufferSchema,\n});\nconst SignatureProviderSchema = z.object({\n pubKey: BufferSchema,\n sign: z.function().args(BufferSchema).returns(z.promise(BufferSchema)),\n});\nexport const SignMethodSchema = z.union([KeyPairSchema, SignatureProviderSchema]);\nexport const isSignMethodValid = (signMethod, options) => {\n const signMethodValidationCtx = SignMethodSchema.safeParse(signMethod);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in signMethodValidationCtx;\n if (!hasError) {\n return { success: true };\n }\n const message = \"Invalid sign method\";\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success: false,\n error: signMethodValidationCtx.error,\n message,\n };\n};\n//# sourceMappingURL=signMethod.js.map","import { z } from \"zod\";\nimport { AnchoringStatus, ResponseStatus } from \"../enums\";\nconst statusEnum = z.union([z.nativeEnum(ResponseStatus), z.nativeEnum(AnchoringStatus)]);\nconst transactionStatusReponseSchema = z\n .object({\n statusCode: z.number().nullable(),\n result: z.object({\n status: statusEnum,\n rejectReason: z.string().optional(),\n }),\n})\n .transform(({ statusCode, result }) => ({\n statusCode,\n status: result.status,\n rejectReason: result.rejectReason,\n}));\nexport function validateTransactionStatusReponse(input) {\n const result = transactionStatusReponseSchema.safeParse(input);\n if (!result.success) {\n throw new Error(\"Model does not match TransactionStatusReponse\");\n }\n return result.data;\n}\n//# sourceMappingURL=transactionStatusReponse.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { randomBytes } from \"crypto\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { getBlockAnchoringTransaction } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport * as logger from \"../logger\";\nimport { toBuffer, toString, toQueryObjectGTV, ensureString, ensureBuffer } from \"../formatter\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { callbackPromiseBuilder, formatBlockInfoResponse, formatTransactionInfoResponse, getClientConfigFromSettings, getGTXFromBufferOrTransactionOrOperation, getSerializedGTX, handlePostResponsePromisified, handleSystemConfirmations, isKeyPair, getAnchoringClientAndSystemChainRid, getSystemAnchoringTransaction, linkPromiEvents, handleGetResponse, handlePostResponse, handleDappConfirmations, getMerkleHashVersionFromDapp, formatRejectedTransactionFromResponse, } from \"./utils\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { NumberOfSignersAndSignaturesException } from \"../gtx/errors\";\nimport { ResponseStatus, ChainConfirmationLevel, AnchoringStatus, TransactionEvent, Method, } from \"./enums\";\nimport { isBlockIdentifierValid } from \"./validation/blockIdentifier\";\nimport { isNetworkSettingValid } from \"./validation/networkSettings\";\nimport { isSignMethodValid } from \"./validation/signMethod\";\nimport { isTxRidValid } from \"./validation/txRid\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { isBlockInfoResponse, isBlockInfoResponseArray, isRawGtv, isRejectedTransactionResponseArray, isTransaction, isTransactionConfirmationProof, isTransactionInfoResponse, isTransactionInfoResponseArray, isTransactionsCount, } from \"./validation/requests\";\nimport { awaitGetAnchoringTransactionForBlockRid } from \"../ICCF/utils\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { validateTransactionStatusReponse } from \"./validation/transactionStatusReponse\";\nexport function createClient(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n isNetworkSettingValid(settings, { throwOnError: true });\n const config = yield getClientConfigFromSettings(settings);\n config.merkleHashVersion = yield getMerkleHashVersion(settings);\n return {\n config,\n query(nameOrQueryObject, args, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let _name, _args;\n if (typeof nameOrQueryObject === \"string\") {\n _name = nameOrQueryObject;\n _args = args;\n }\n else {\n _name = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.name;\n _args = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.args;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `query_gtv/${config.blockchainRid}`, config, encodeValue(toQueryObjectGTV(_name, _args)));\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n signTransaction(transaction, signMethod, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Signing transaction with ${!isKeyPair(signMethod) ? \"signature provider containing \" : \"\"}pubKey: ${toString(signMethod.pubKey)}`);\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n try {\n const signedTx = yield (isKeyPair(signMethod)\n ? gtxTool.sign(gtx, signMethod.privKey, config.merkleHashVersion, signMethod.pubKey)\n : gtxTool.sign(gtx, signMethod, config.merkleHashVersion));\n const gtxBytes = getSerializedGTX(signedTx);\n if (typeof callback === \"function\") {\n callback(null, gtxBytes);\n }\n return gtxBytes;\n }\n catch (error) {\n if (typeof callback === \"function\") {\n callback(error, null);\n }\n // Todo the error should be replaced with the custom error MissingSignerException\n throw new Error(error);\n }\n });\n },\n sendTransaction(transaction, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n try {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n if (gtx.signers.length !== ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n reject(new NumberOfSignersAndSignaturesException());\n }\n const gtxBytes = getSerializedGTX(gtx);\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `tx/${config.blockchainRid}`, config, gtxBytes);\n const transactionRid = gtxTool.getDigestToSign(gtx, config.merkleHashVersion);\n try {\n yield handlePostResponsePromisified(error, statusCode, isRawGtv(rspBody));\n if (typeof callback === \"function\") {\n callback(null, {\n status: ResponseStatus.Waiting,\n statusCode,\n transactionRid: transactionRid,\n node: (_b = config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url,\n });\n }\n }\n catch (_error) {\n if (typeof callback === \"function\") {\n callback(_error, null);\n }\n return reject(_error);\n }\n const client = this;\n const statusPollingConfig = {\n dappStatusPolling: client.config.dappStatusPolling,\n clusterAnchoringStatusPolling: client.config.clusterAnchoringStatusPolling,\n systemAnchoringStatusPolling: client.config.systemAnchoringStatusPolling,\n };\n let transactionReceipt = yield handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, statusPollingConfig.dappStatusPolling, () => client.getTransactionStatus(transactionRid, callback), client);\n if (confirmationLevel === ChainConfirmationLevel.None ||\n confirmationLevel === ChainConfirmationLevel.Dapp) {\n resolve(transactionReceipt);\n return;\n }\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n transactionReceipt = yield handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBridString, () => client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback), anchoredTxRid => client.getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainBridString, callback));\n resolve(transactionReceipt);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n }));\n return promiEvent;\n },\n signAndSendUniqueTransaction(transactionOrOperation, signMethod, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n isSignMethodValid(signMethod, { throwOnError: true });\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const transaction = \"name\" in transactionOrOperation\n ? {\n operations: [transactionOrOperation],\n signers: [signMethod.pubKey],\n }\n : transactionOrOperation;\n const hasNop = transaction.operations.some(operation => {\n return operation.name === \"nop\";\n });\n const transactionWithNop = hasNop ? transaction : client.addNop(transaction);\n try {\n const signedTx = yield client.signTransaction(transactionWithNop, signMethod);\n promiEvent.emit(TransactionEvent.Signed, signedTx);\n const sendTransactionPromiEvent = client.sendTransaction(signedTx, doStatusPolling, callback, confirmationLevel);\n linkPromiEvents(sendTransactionPromiEvent, promiEvent);\n resolve(yield sendTransactionPromiEvent);\n }\n catch (error) {\n reject(error);\n }\n }));\n return promiEvent;\n },\n getTransaction(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transaction = isTransaction(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionStatus(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${transactionRid.toString(\"hex\")}/status`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, result => resolve(validateTransactionStatusReponse({\n statusCode,\n result,\n })), callback));\n });\n });\n },\n addNop(transaction) {\n const _transaction = cloneDeep(transaction);\n const noOperation = {\n name: \"nop\",\n args: [randomBytes(32)],\n };\n _transaction.operations = [..._transaction.operations, noOperation];\n return _transaction;\n },\n getTransactionsInfo(limit = 25, beforeTime, callback, afterTime, signerPubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const beforeTimeQueryParam = beforeTime ? `&before-time=${beforeTime.getTime()}` : \"\";\n const afterTimeQueryParam = afterTime ? `&after-time=${afterTime.getTime()}` : \"\";\n const signerQueryParam = signerPubKey ? `&signer=${signerPubKey}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}?limit=${limit}${beforeTimeQueryParam}${afterTimeQueryParam}${signerQueryParam}`, config);\n const transactionsInfoResponseArray = isTransactionInfoResponseArray(rspBody);\n const body = statusCode === 200 && transactionsInfoResponseArray\n ? transactionsInfoResponseArray.map(formatTransactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionInfo(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transactionInfoResponse = isTransactionInfoResponse(rspBody);\n const body = statusCode === 200 && transactionInfoResponse\n ? formatTransactionInfoResponse(transactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getAnchoringStatusForBlockRid(blockRid, anchoringClient, systemAnchoringChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const result = { status: AnchoringStatus.NotAnchored };\n const clusterAnchoredTx = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, ensureBuffer(client.config.blockchainRid), ensureBuffer(blockRid), config.clusterAnchoringStatusPolling);\n if (!clusterAnchoredTx) {\n return result;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoredTx);\n if (!anchoringTransactionValidation.success) {\n return result;\n }\n result.status = AnchoringStatus.ClusterAnchored;\n result.clusterAnchoredTx = anchoringTransactionValidation.data;\n const systemAnchoredTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n if (!systemAnchoredTransaction) {\n return result;\n }\n result.status = AnchoringStatus.SystemAnchored;\n result.systemAnchoredTx = systemAnchoredTransaction;\n return result;\n });\n },\n getTransactionConfirmationLevel(transactionRid, callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const client = this;\n const dappConfirmation = yield client.getTransactionStatus(transactionRid);\n const response = {\n status: dappConfirmation.status,\n statusCode: dappConfirmation.statusCode,\n transactionRid: ensureBuffer(transactionRid),\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n if (dappConfirmation.status === ResponseStatus.Waiting) {\n return response;\n }\n let clusterAnchoringResult = null;\n if (dappConfirmation.status === ResponseStatus.Confirmed) {\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n clusterAnchoringResult = yield client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient);\n if (clusterAnchoringResult === AnchoringStatus.NotAnchored || !clusterAnchoringResult) {\n return response;\n }\n if (clusterAnchoringResult === AnchoringStatus.FailedAnchoring) {\n response.status = AnchoringStatus.FailedAnchoring;\n response.statusCode = 400;\n return response;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoringResult);\n if (!anchoringTransactionValidation.success) {\n return response;\n }\n if (anchoringTransactionValidation.success) {\n response.status = AnchoringStatus.ClusterAnchored;\n response.statusCode = 200;\n response.clusterAnchoredTx = anchoringTransactionValidation.data;\n response.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n const systemAnchoringResult = yield client.getSystemAnchoringTransactionConfirmation(anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainBridString);\n if (!systemAnchoringResult) {\n return response;\n }\n response.status = AnchoringStatus.SystemAnchored;\n response.systemAnchoredTx = systemAnchoringResult;\n response.systemAnchoringClientBrid = systemAnchoringChainBridString;\n return response;\n }\n }\n return response;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n });\n },\n getTransactionCount(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/count`, config, undefined, true);\n const transactionsCount = isTransactionsCount(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? transactionsCount === null || transactionsCount === void 0 ? void 0 : transactionsCount.transactionsCount : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlockInfo(blockIdentifier, txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n isBlockIdentifierValid(blockIdentifier, { throwOnError: true });\n const queryString = typeof blockIdentifier === \"string\" ? blockIdentifier : `height/${blockIdentifier}`;\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}/${queryString}?txs=${txs}`, config);\n const blockInfoResponse = isBlockInfoResponse(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponse !== null && blockInfoResponse\n ? formatBlockInfoResponse(blockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getLatestBlock(txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const shouldIncludeFullTransaction = txs ? `&txs=${txs}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?limit=1${shouldIncludeFullTransaction}`, config, undefined, true);\n const indexOfLatestBlock = 0;\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray !== null && blockInfoResponseArray\n ? formatBlockInfoResponse(blockInfoResponseArray[indexOfLatestBlock])\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlocks({ limit, beforeTime, afterTime, beforeHeight, afterHeight, excludeEmpty, txs, callback, } = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const searchValues = {\n limit,\n txs,\n \"before-time\": beforeTime,\n \"after-time\": afterTime,\n \"before-height\": beforeHeight,\n \"after-height\": afterHeight,\n \"exclude-empty\": excludeEmpty,\n };\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(searchValues)) {\n if (value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?${searchParams}`, config);\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray\n ? blockInfoResponseArray.map(formatBlockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClientNodeUrlPool() {\n return config.endpointPool.map((endpoint) => endpoint.url);\n },\n /**\n * Retrieves a confirmation proof for a transaction with the specified sha256\n * hash.\n * @param txRid A buffer of 32 bytes\n * @param callback parameters (error, responseObjectProof) if first\n * parameter is not null, an error occurred.\n * If first parameter is null, then the second parameter is an object\n * like the following:\n *\n * {hash: messageHashBuffer,\n * blockHeader: blockHeaderBuffer,\n * signatures: [{pubKey: pubKeyBuffer, signature: sigBuffer}, ...],\n * merklePath: [{side: <0|1>, hash: <hash buffer level n-1>},\n * ...\n * {side: <0|1>, hash: <hash buffer level 1>}]}\n *\n * If no such transaction RID exists, the callback will be called with (null, null).\n *\n * The proof object can be validated using\n * postchain-common.util.validateMerklePath(proof.merklePath, proof.hash,\n * proof.blockHeader.slice(32, 64))\n *\n * The signatures must be validated agains some know trusted source for valid signers\n * at this specific block height.\n */\n getConfirmationProof(txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(txRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(txRid)}/confirmationProof`, config);\n const confirmationProof = {\n merkleProofTree: \"\",\n txIndex: 0,\n };\n if (statusCode === 200) {\n try {\n const transactionConfirmationProof = isTransactionConfirmationProof(rspBody);\n if (!transactionConfirmationProof) {\n throw error;\n }\n const decodedProof = decodeValue(toBuffer(transactionConfirmationProof.proof));\n confirmationProof.txIndex = decodedProof.txIndex;\n confirmationProof.hash = decodedProof.hash;\n confirmationProof.blockHeader = decodedProof.blockHeader;\n confirmationProof.witness = decodedProof.witness;\n confirmationProof.merkleProofTree = decodedProof.merkleProofTree;\n }\n catch (decodeError) {\n if (callback) {\n callback(decodeError, null);\n }\n throw decodeError;\n }\n }\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? confirmationProof : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const client = this;\n try {\n let confirmationProof;\n try {\n confirmationProof = yield client.getConfirmationProof(transactionRid);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.NotAnchored;\n }\n const anchoringTransaction = yield getBlockAnchoringTransaction(client, anchoringClient, transactionRid, confirmationProof);\n if (!anchoringTransaction)\n return AnchoringStatus.NotAnchored;\n return anchoringTransaction;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.FailedAnchoring;\n }\n });\n },\n getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(anchoredTxRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const systemAnchoringTransactionTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n return systemAnchoringTransactionTransaction;\n });\n },\n getWaitingTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getWaitingTransaction(blockchainRid, txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody, transactionTimestamp } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting/${ensureString(txRid)}`, config);\n const transaction = isTransaction(rspBody);\n const result = transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, result, callbackPromiseBuilder(reject, txData => resolve({\n txData: isRawGtv(txData),\n transactionTimestamp: Number(transactionTimestamp),\n }), callback));\n });\n });\n },\n getRejectedTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/rejected`, config);\n const rejectedTransactionsArray = isRejectedTransactionResponseArray(rspBody);\n const validResponseBody = statusCode === 200 && rejectedTransactionsArray\n ? rejectedTransactionsArray.map(rejectedTransaction => formatRejectedTransactionFromResponse(rejectedTransaction))\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(validResponseBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n /**\n * Get app structure. Returns list of app modules in JSON format\n * @param callback - leverages error-first pattern and called when promise resolves\n */\n getAppStructure(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/query/${config.blockchainRid}?type=rell.get_app_structure`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n };\n function getMerkleHashVersion(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n let merkleHashVersion;\n if (settings.merkleHashVersion !== undefined) {\n merkleHashVersion = settings.merkleHashVersion;\n }\n else {\n merkleHashVersion = yield getMerkleHashVersionFromDapp(config);\n }\n return merkleHashVersion;\n });\n }\n });\n}\n//# sourceMappingURL=blockchainClient.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { setStatusPolling } from \"./utils\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function createStubClient() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n config: {\n merkleHashVersion: MERKLE_HASH_VERSIONS.ONE,\n nodeManager: createNodeManager({\n nodeUrls: [],\n }),\n endpointPool: [],\n blockchainRid: \"0000000000000000000000000000000000000000000000000000000000000000\",\n dappStatusPolling: setStatusPolling({ interval: 5000, count: 5 }),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 5000,\n unreachableDuration: 30000,\n directoryChainRid: \"1111111111111111111111111111111111111111111111111111111111111111\",\n },\n query() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"query rejected\");\n });\n },\n signTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"signTransaction rejected\");\n });\n },\n sendTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"sendTransaction rejected\"));\n },\n signAndSendUniqueTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"signAndSendUniqueTransaction rejected\"));\n },\n getTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransaction rejected\");\n });\n },\n getTransactionStatus() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionStatus rejected\");\n });\n },\n addNop() {\n throw new Error(\"addNop error\");\n },\n getTransactionsInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionsInfo rejected\");\n });\n },\n getTransactionInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionInfo rejected\");\n });\n },\n getAnchoringStatusForBlockRid() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getAnchoringStatusForBlockRid rejected\");\n });\n },\n getTransactionConfirmationLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionConfirmationLevel rejected\");\n });\n },\n getTransactionCount() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionCount rejected\");\n });\n },\n getBlocks() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getBlockInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getLatestBlock() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getLatestBlock rejected\");\n });\n },\n getClientNodeUrlPool() {\n return [];\n },\n getConfirmationProof() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getConfirmationProof rejected\");\n });\n },\n getClusterAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getClusterAnchoringTransactionConfirmation rejected\");\n });\n },\n getSystemAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getSystemAnchoringTransactionConfirmation rejected\");\n });\n },\n getAppStructure() {\n return Promise.reject(\"getAppStructure rejected\");\n },\n getWaitingTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransactions rejected\");\n });\n },\n getWaitingTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransaction rejected\");\n });\n },\n getRejectedTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getRejectedTransactions rejected\");\n });\n },\n };\n });\n}\n//# sourceMappingURL=clientStub.js.map","import { GetTransactionRidException } from \"../blockchainClient/errors\";\nimport { getDigestToSignFromRawGtxBody } from \"../gtx/gtx\";\n/**\n * Calculates and returns the transaction RID, i.e., the merkle root hash of the transaction.\n * @param transaction The transaction in format of RawGtxBody\n *\n */\nexport function calculateTransactionRid(transaction, merkleHashVersion) {\n try {\n return getDigestToSignFromRawGtxBody(transaction, merkleHashVersion);\n }\n catch (error) {\n throw new GetTransactionRidException(error);\n }\n}\n//# sourceMappingURL=calculateTransactionRid.js.map","import { formatter } from \"../..\";\nexport function dumpGtx(gtxTx) {\n var _a;\n return `blockchainRid:\\n${formatter.toString(gtxTx.blockchainRid)}\\n\noperations:\n${gtxTx.operations.map(op => ` - ${op.opName}(${op.args.map(dumpGtv).join(\", \")})\\n`).join(\"\")}\nsigners:\n${gtxTx.signers.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}\nsignatures:\n${(_a = gtxTx.signatures) === null || _a === void 0 ? void 0 : _a.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}`;\n}\nexport function dumpGtv(rawGtv) {\n return JSON.stringify(rawGtv, (_key, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}L`;\n }\n if (Buffer.isBuffer(value)) {\n return formatter.toString(value);\n }\n if (typeof value === \"object\" &&\n value !== null &&\n value.type === \"Buffer\" &&\n Array.isArray(value.data)) {\n return `0x${value.data}`;\n }\n return value;\n });\n}\n//# sourceMappingURL=dump.js.map","import * as gtxTool from \"../gtx/gtx\";\nimport * as logger from \"../logger\";\nimport { dumpGtv } from \"./dump\";\n/**\n * Decodes the transaction using ASN.1.\n * @returns the transaction decoded in GTX format\n */\nexport function decodeTransactionToGtx(encodedTransaction) {\n const gtx = gtxTool.deserialize(encodedTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${dumpGtv(gtx)}`);\n return gtx;\n}\n//# sourceMappingURL=decodeTransactionToGtx.js.map"],"names":["z","BN","gtvHash","encode","serialization.encodeValue","decode","serialization.decodeValue","secp256k1","crypto","sign","serialization.encodeValueGtx","serialization.decodeValueGtx","__awaiter","this","gtv.gtvHash","gtxEncode","gtxDecode","_a","FailoverStrategy","ResponseStatus","TransactionEvent","AnchoringStatus","ChainConfirmationLevel","logger.debug","error","logger.error","logger.warning","logger.info","gtxTool.deserialize","EventEmitter","gtx","gtxTool.sign","gtxTool.getDigestToSign","randomBytes","formatter.toString"],"mappings":"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"}