@bitgo/account-lib 3.0.0-hotfix.0 → 4.0.0

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 (621) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +203 -29
  3. package/README.md +5 -7
  4. package/dist/resources/README.md +0 -22
  5. package/dist/src/index.d.ts +34 -20
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +57 -40
  8. package/dist/tsconfig.tsbuildinfo +26050 -40851
  9. package/package.json +29 -77
  10. package/resources/README.md +0 -22
  11. package/dist/browser/bitgo-account-lib.js +0 -2
  12. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +0 -335
  13. package/dist/resources/hbar/protobuf/BasicTypes.proto +0 -424
  14. package/dist/resources/hbar/protobuf/CryptoCreate.proto +0 -47
  15. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
  16. package/dist/resources/hbar/protobuf/Duration.proto +0 -28
  17. package/dist/resources/hbar/protobuf/Timestamp.proto +0 -34
  18. package/dist/resources/hbar/protobuf/Transaction.proto +0 -35
  19. package/dist/resources/hbar/protobuf/TransactionBody.proto +0 -24
  20. package/dist/resources/hbar/protobuf/TransactionContents.proto +0 -33
  21. package/dist/resources/hbar/protobuf/hedera.d.ts +0 -4612
  22. package/dist/resources/hbar/protobuf/hedera.js +0 -12192
  23. package/dist/resources/trx/protobuf/Contract.proto +0 -256
  24. package/dist/resources/trx/protobuf/Discover.proto +0 -44
  25. package/dist/resources/trx/protobuf/tron.d.ts +0 -11024
  26. package/dist/resources/trx/protobuf/tron.js +0 -31510
  27. package/dist/resources/trx/protobuf/tron.proto +0 -677
  28. package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -42
  29. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
  30. package/dist/src/coin/algo/assetTransferBuilder.js +0 -105
  31. package/dist/src/coin/algo/errors.d.ts +0 -11
  32. package/dist/src/coin/algo/errors.d.ts.map +0 -1
  33. package/dist/src/coin/algo/errors.js +0 -27
  34. package/dist/src/coin/algo/ifaces.d.ts +0 -46
  35. package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
  36. package/dist/src/coin/algo/ifaces.js +0 -3
  37. package/dist/src/coin/algo/index.d.ts +0 -13
  38. package/dist/src/coin/algo/index.d.ts.map +0 -1
  39. package/dist/src/coin/algo/index.js +0 -47
  40. package/dist/src/coin/algo/keyPair.d.ts +0 -25
  41. package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
  42. package/dist/src/coin/algo/keyPair.js +0 -77
  43. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
  44. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
  45. package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -239
  46. package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
  47. package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
  48. package/dist/src/coin/algo/seedEncoding.js +0 -97
  49. package/dist/src/coin/algo/transaction.d.ts +0 -75
  50. package/dist/src/coin/algo/transaction.d.ts.map +0 -1
  51. package/dist/src/coin/algo/transaction.js +0 -251
  52. package/dist/src/coin/algo/transactionBuilder.d.ts +0 -204
  53. package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
  54. package/dist/src/coin/algo/transactionBuilder.js +0 -373
  55. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
  56. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
  57. package/dist/src/coin/algo/transactionBuilderFactory.js +0 -52
  58. package/dist/src/coin/algo/transferBuilder.d.ts +0 -40
  59. package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
  60. package/dist/src/coin/algo/transferBuilder.js +0 -89
  61. package/dist/src/coin/algo/txnSchema.d.ts +0 -7
  62. package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
  63. package/dist/src/coin/algo/txnSchema.js +0 -68
  64. package/dist/src/coin/algo/utils.d.ts +0 -249
  65. package/dist/src/coin/algo/utils.d.ts.map +0 -1
  66. package/dist/src/coin/algo/utils.js +0 -539
  67. package/dist/src/coin/avaxc/index.d.ts +0 -8
  68. package/dist/src/coin/avaxc/index.d.ts.map +0 -1
  69. package/dist/src/coin/avaxc/index.js +0 -35
  70. package/dist/src/coin/avaxc/keyPair.d.ts +0 -26
  71. package/dist/src/coin/avaxc/keyPair.d.ts.map +0 -1
  72. package/dist/src/coin/avaxc/keyPair.js +0 -83
  73. package/dist/src/coin/avaxc/resources.d.ts +0 -12
  74. package/dist/src/coin/avaxc/resources.d.ts.map +0 -1
  75. package/dist/src/coin/avaxc/resources.js +0 -27
  76. package/dist/src/coin/avaxc/transactionBuilder.d.ts +0 -17
  77. package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +0 -1
  78. package/dist/src/coin/avaxc/transactionBuilder.js +0 -45
  79. package/dist/src/coin/avaxc/transferBuilder.d.ts +0 -17
  80. package/dist/src/coin/avaxc/transferBuilder.d.ts.map +0 -1
  81. package/dist/src/coin/avaxc/transferBuilder.js +0 -25
  82. package/dist/src/coin/avaxc/utils.d.ts +0 -39
  83. package/dist/src/coin/avaxc/utils.d.ts.map +0 -1
  84. package/dist/src/coin/avaxc/utils.js +0 -70
  85. package/dist/src/coin/avaxc/walletUtil.d.ts +0 -22
  86. package/dist/src/coin/avaxc/walletUtil.d.ts.map +0 -1
  87. package/dist/src/coin/avaxc/walletUtil.js +0 -62
  88. package/dist/src/coin/baseCoin/baseKeyPair.d.ts +0 -27
  89. package/dist/src/coin/baseCoin/baseKeyPair.d.ts.map +0 -1
  90. package/dist/src/coin/baseCoin/baseKeyPair.js +0 -3
  91. package/dist/src/coin/baseCoin/baseTransaction.d.ts +0 -71
  92. package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +0 -1
  93. package/dist/src/coin/baseCoin/baseTransaction.js +0 -94
  94. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +0 -128
  95. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +0 -1
  96. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +0 -179
  97. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +0 -30
  98. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +0 -1
  99. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +0 -20
  100. package/dist/src/coin/baseCoin/baseUtils.d.ts +0 -45
  101. package/dist/src/coin/baseCoin/baseUtils.d.ts.map +0 -1
  102. package/dist/src/coin/baseCoin/baseUtils.js +0 -3
  103. package/dist/src/coin/baseCoin/blsKeyPair.d.ts +0 -75
  104. package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +0 -1
  105. package/dist/src/coin/baseCoin/blsKeyPair.js +0 -232
  106. package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +0 -50
  107. package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +0 -1
  108. package/dist/src/coin/baseCoin/ed25519KeyPair.js +0 -141
  109. package/dist/src/coin/baseCoin/enum.d.ts +0 -43
  110. package/dist/src/coin/baseCoin/enum.d.ts.map +0 -1
  111. package/dist/src/coin/baseCoin/enum.js +0 -70
  112. package/dist/src/coin/baseCoin/errors.d.ts +0 -65
  113. package/dist/src/coin/baseCoin/errors.d.ts.map +0 -1
  114. package/dist/src/coin/baseCoin/errors.js +0 -156
  115. package/dist/src/coin/baseCoin/iface.d.ts +0 -162
  116. package/dist/src/coin/baseCoin/iface.d.ts.map +0 -1
  117. package/dist/src/coin/baseCoin/iface.js +0 -38
  118. package/dist/src/coin/baseCoin/index.d.ts +0 -12
  119. package/dist/src/coin/baseCoin/index.d.ts.map +0 -1
  120. package/dist/src/coin/baseCoin/index.js +0 -41
  121. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts +0 -55
  122. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +0 -1
  123. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.js +0 -124
  124. package/dist/src/coin/celo/index.d.ts +0 -8
  125. package/dist/src/coin/celo/index.d.ts.map +0 -1
  126. package/dist/src/coin/celo/index.js +0 -35
  127. package/dist/src/coin/celo/resources.d.ts +0 -10
  128. package/dist/src/coin/celo/resources.d.ts.map +0 -1
  129. package/dist/src/coin/celo/resources.js +0 -26
  130. package/dist/src/coin/celo/stakingBuilder.d.ts +0 -91
  131. package/dist/src/coin/celo/stakingBuilder.d.ts.map +0 -1
  132. package/dist/src/coin/celo/stakingBuilder.js +0 -277
  133. package/dist/src/coin/celo/stakingCall.d.ts +0 -7
  134. package/dist/src/coin/celo/stakingCall.d.ts.map +0 -1
  135. package/dist/src/coin/celo/stakingCall.js +0 -13
  136. package/dist/src/coin/celo/stakingUtils.d.ts +0 -15
  137. package/dist/src/coin/celo/stakingUtils.d.ts.map +0 -1
  138. package/dist/src/coin/celo/stakingUtils.js +0 -98
  139. package/dist/src/coin/celo/transaction.d.ts +0 -10
  140. package/dist/src/coin/celo/transaction.d.ts.map +0 -1
  141. package/dist/src/coin/celo/transaction.js +0 -37
  142. package/dist/src/coin/celo/transactionBuilder.d.ts +0 -86
  143. package/dist/src/coin/celo/transactionBuilder.d.ts.map +0 -1
  144. package/dist/src/coin/celo/transactionBuilder.js +0 -228
  145. package/dist/src/coin/celo/transferBuilder.d.ts +0 -19
  146. package/dist/src/coin/celo/transferBuilder.d.ts.map +0 -1
  147. package/dist/src/coin/celo/transferBuilder.js +0 -27
  148. package/dist/src/coin/celo/types.d.ts +0 -52
  149. package/dist/src/coin/celo/types.d.ts.map +0 -1
  150. package/dist/src/coin/celo/types.js +0 -222
  151. package/dist/src/coin/celo/utils.d.ts +0 -18
  152. package/dist/src/coin/celo/utils.d.ts.map +0 -1
  153. package/dist/src/coin/celo/utils.js +0 -99
  154. package/dist/src/coin/cspr/constants.d.ts +0 -19
  155. package/dist/src/coin/cspr/constants.d.ts.map +0 -1
  156. package/dist/src/coin/cspr/constants.js +0 -28
  157. package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
  158. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
  159. package/dist/src/coin/cspr/delegateBuilder.js +0 -111
  160. package/dist/src/coin/cspr/ifaces.d.ts +0 -69
  161. package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
  162. package/dist/src/coin/cspr/ifaces.js +0 -3
  163. package/dist/src/coin/cspr/index.d.ts +0 -5
  164. package/dist/src/coin/cspr/index.d.ts.map +0 -1
  165. package/dist/src/coin/cspr/index.js +0 -29
  166. package/dist/src/coin/cspr/keyPair.d.ts +0 -18
  167. package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
  168. package/dist/src/coin/cspr/keyPair.js +0 -75
  169. package/dist/src/coin/cspr/transaction.d.ts +0 -55
  170. package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
  171. package/dist/src/coin/cspr/transaction.js +0 -227
  172. package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -124
  173. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
  174. package/dist/src/coin/cspr/transactionBuilder.js +0 -312
  175. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
  176. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
  177. package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -98
  178. package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
  179. package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
  180. package/dist/src/coin/cspr/transferBuilder.js +0 -106
  181. package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
  182. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
  183. package/dist/src/coin/cspr/undelegateBuilder.js +0 -111
  184. package/dist/src/coin/cspr/utils.d.ts +0 -188
  185. package/dist/src/coin/cspr/utils.d.ts.map +0 -1
  186. package/dist/src/coin/cspr/utils.js +0 -478
  187. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
  188. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
  189. package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -95
  190. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +0 -79
  191. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +0 -1
  192. package/dist/src/coin/dot/addressInitializationBuilder.js +0 -182
  193. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +0 -47
  194. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +0 -1
  195. package/dist/src/coin/dot/batchTransactionBuilder.js +0 -122
  196. package/dist/src/coin/dot/claimBuilder.d.ts +0 -58
  197. package/dist/src/coin/dot/claimBuilder.d.ts.map +0 -1
  198. package/dist/src/coin/dot/claimBuilder.js +0 -117
  199. package/dist/src/coin/dot/errors.d.ts +0 -8
  200. package/dist/src/coin/dot/errors.d.ts.map +0 -1
  201. package/dist/src/coin/dot/errors.js +0 -19
  202. package/dist/src/coin/dot/iface.d.ts +0 -194
  203. package/dist/src/coin/dot/iface.d.ts.map +0 -1
  204. package/dist/src/coin/dot/iface.js +0 -39
  205. package/dist/src/coin/dot/index.d.ts +0 -17
  206. package/dist/src/coin/dot/index.d.ts.map +0 -1
  207. package/dist/src/coin/dot/index.js +0 -53
  208. package/dist/src/coin/dot/keyPair.d.ts +0 -31
  209. package/dist/src/coin/dot/keyPair.d.ts.map +0 -1
  210. package/dist/src/coin/dot/keyPair.js +0 -74
  211. package/dist/src/coin/dot/singletonRegistry.d.ts +0 -7
  212. package/dist/src/coin/dot/singletonRegistry.d.ts.map +0 -1
  213. package/dist/src/coin/dot/singletonRegistry.js +0 -20
  214. package/dist/src/coin/dot/stakingBuilder.d.ts +0 -58
  215. package/dist/src/coin/dot/stakingBuilder.d.ts.map +0 -1
  216. package/dist/src/coin/dot/stakingBuilder.js +0 -135
  217. package/dist/src/coin/dot/transaction.d.ts +0 -65
  218. package/dist/src/coin/dot/transaction.d.ts.map +0 -1
  219. package/dist/src/coin/dot/transaction.js +0 -396
  220. package/dist/src/coin/dot/transactionBuilder.d.ts +0 -131
  221. package/dist/src/coin/dot/transactionBuilder.d.ts.map +0 -1
  222. package/dist/src/coin/dot/transactionBuilder.js +0 -332
  223. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +0 -26
  224. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +0 -1
  225. package/dist/src/coin/dot/transactionBuilderFactory.js +0 -93
  226. package/dist/src/coin/dot/transferBuilder.d.ts +0 -71
  227. package/dist/src/coin/dot/transferBuilder.d.ts.map +0 -1
  228. package/dist/src/coin/dot/transferBuilder.js +0 -171
  229. package/dist/src/coin/dot/txnSchema.d.ts +0 -14
  230. package/dist/src/coin/dot/txnSchema.d.ts.map +0 -1
  231. package/dist/src/coin/dot/txnSchema.js +0 -104
  232. package/dist/src/coin/dot/unnominateBuilder.d.ts +0 -24
  233. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +0 -1
  234. package/dist/src/coin/dot/unnominateBuilder.js +0 -50
  235. package/dist/src/coin/dot/unstakeBuilder.d.ts +0 -38
  236. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +0 -1
  237. package/dist/src/coin/dot/unstakeBuilder.js +0 -89
  238. package/dist/src/coin/dot/utils.d.ts +0 -138
  239. package/dist/src/coin/dot/utils.d.ts.map +0 -1
  240. package/dist/src/coin/dot/utils.js +0 -269
  241. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +0 -38
  242. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +0 -1
  243. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +0 -90
  244. package/dist/src/coin/etc/index.d.ts +0 -8
  245. package/dist/src/coin/etc/index.d.ts.map +0 -1
  246. package/dist/src/coin/etc/index.js +0 -35
  247. package/dist/src/coin/etc/resources.d.ts +0 -10
  248. package/dist/src/coin/etc/resources.d.ts.map +0 -1
  249. package/dist/src/coin/etc/resources.js +0 -26
  250. package/dist/src/coin/etc/transactionBuilder.d.ts +0 -17
  251. package/dist/src/coin/etc/transactionBuilder.d.ts.map +0 -1
  252. package/dist/src/coin/etc/transactionBuilder.js +0 -45
  253. package/dist/src/coin/etc/transferBuilder.d.ts +0 -19
  254. package/dist/src/coin/etc/transferBuilder.d.ts.map +0 -1
  255. package/dist/src/coin/etc/transferBuilder.js +0 -27
  256. package/dist/src/coin/etc/utils.d.ts +0 -18
  257. package/dist/src/coin/etc/utils.d.ts.map +0 -1
  258. package/dist/src/coin/etc/utils.js +0 -42
  259. package/dist/src/coin/eth/contractCall.d.ts +0 -8
  260. package/dist/src/coin/eth/contractCall.d.ts.map +0 -1
  261. package/dist/src/coin/eth/contractCall.js +0 -17
  262. package/dist/src/coin/eth/iface.d.ts +0 -122
  263. package/dist/src/coin/eth/iface.d.ts.map +0 -1
  264. package/dist/src/coin/eth/iface.js +0 -8
  265. package/dist/src/coin/eth/index.d.ts +0 -10
  266. package/dist/src/coin/eth/index.d.ts.map +0 -1
  267. package/dist/src/coin/eth/index.js +0 -39
  268. package/dist/src/coin/eth/keyPair.d.ts +0 -26
  269. package/dist/src/coin/eth/keyPair.d.ts.map +0 -1
  270. package/dist/src/coin/eth/keyPair.js +0 -85
  271. package/dist/src/coin/eth/transaction.d.ts +0 -64
  272. package/dist/src/coin/eth/transaction.d.ts.map +0 -1
  273. package/dist/src/coin/eth/transaction.js +0 -137
  274. package/dist/src/coin/eth/transactionBuilder.d.ts +0 -194
  275. package/dist/src/coin/eth/transactionBuilder.d.ts.map +0 -1
  276. package/dist/src/coin/eth/transactionBuilder.js +0 -624
  277. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts +0 -47
  278. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts.map +0 -1
  279. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +0 -113
  280. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts +0 -14
  281. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts.map +0 -1
  282. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +0 -83
  283. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts +0 -13
  284. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts.map +0 -1
  285. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +0 -68
  286. package/dist/src/coin/eth/transferBuilder.d.ts +0 -65
  287. package/dist/src/coin/eth/transferBuilder.d.ts.map +0 -1
  288. package/dist/src/coin/eth/transferBuilder.js +0 -197
  289. package/dist/src/coin/eth/types.d.ts +0 -39
  290. package/dist/src/coin/eth/types.d.ts.map +0 -1
  291. package/dist/src/coin/eth/types.js +0 -135
  292. package/dist/src/coin/eth/utils.d.ts +0 -202
  293. package/dist/src/coin/eth/utils.d.ts.map +0 -1
  294. package/dist/src/coin/eth/utils.js +0 -485
  295. package/dist/src/coin/eth/walletUtil.d.ts +0 -19
  296. package/dist/src/coin/eth/walletUtil.d.ts.map +0 -1
  297. package/dist/src/coin/eth/walletUtil.js +0 -29
  298. package/dist/src/coin/eth2/index.d.ts +0 -2
  299. package/dist/src/coin/eth2/index.d.ts.map +0 -1
  300. package/dist/src/coin/eth2/index.js +0 -6
  301. package/dist/src/coin/eth2/keyPair.d.ts +0 -33
  302. package/dist/src/coin/eth2/keyPair.d.ts.map +0 -1
  303. package/dist/src/coin/eth2/keyPair.js +0 -65
  304. package/dist/src/coin/hbar/ifaces.d.ts +0 -26
  305. package/dist/src/coin/hbar/ifaces.d.ts.map +0 -1
  306. package/dist/src/coin/hbar/ifaces.js +0 -3
  307. package/dist/src/coin/hbar/index.d.ts +0 -6
  308. package/dist/src/coin/hbar/index.d.ts.map +0 -1
  309. package/dist/src/coin/hbar/index.js +0 -31
  310. package/dist/src/coin/hbar/keyPair.d.ts +0 -23
  311. package/dist/src/coin/hbar/keyPair.d.ts.map +0 -1
  312. package/dist/src/coin/hbar/keyPair.js +0 -70
  313. package/dist/src/coin/hbar/transaction.d.ts +0 -98
  314. package/dist/src/coin/hbar/transaction.d.ts.map +0 -1
  315. package/dist/src/coin/hbar/transaction.js +0 -245
  316. package/dist/src/coin/hbar/transactionBuilder.d.ts +0 -112
  317. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +0 -1
  318. package/dist/src/coin/hbar/transactionBuilder.js +0 -264
  319. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +0 -37
  320. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +0 -1
  321. package/dist/src/coin/hbar/transactionBuilderFactory.js +0 -77
  322. package/dist/src/coin/hbar/transferBuilder.d.ts +0 -44
  323. package/dist/src/coin/hbar/transferBuilder.d.ts.map +0 -1
  324. package/dist/src/coin/hbar/transferBuilder.js +0 -130
  325. package/dist/src/coin/hbar/utils.d.ts +0 -139
  326. package/dist/src/coin/hbar/utils.d.ts.map +0 -1
  327. package/dist/src/coin/hbar/utils.js +0 -310
  328. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +0 -28
  329. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +0 -1
  330. package/dist/src/coin/hbar/walletInitializationBuilder.js +0 -90
  331. package/dist/src/coin/near/constants.d.ts +0 -12
  332. package/dist/src/coin/near/constants.d.ts.map +0 -1
  333. package/dist/src/coin/near/constants.js +0 -15
  334. package/dist/src/coin/near/contractCallWrapper.d.ts +0 -33
  335. package/dist/src/coin/near/contractCallWrapper.d.ts.map +0 -1
  336. package/dist/src/coin/near/contractCallWrapper.js +0 -68
  337. package/dist/src/coin/near/errors.d.ts +0 -5
  338. package/dist/src/coin/near/errors.d.ts.map +0 -1
  339. package/dist/src/coin/near/errors.js +0 -12
  340. package/dist/src/coin/near/iface.d.ts +0 -40
  341. package/dist/src/coin/near/iface.d.ts.map +0 -1
  342. package/dist/src/coin/near/iface.js +0 -8
  343. package/dist/src/coin/near/index.d.ts +0 -11
  344. package/dist/src/coin/near/index.d.ts.map +0 -1
  345. package/dist/src/coin/near/index.js +0 -41
  346. package/dist/src/coin/near/keyPair.d.ts +0 -25
  347. package/dist/src/coin/near/keyPair.d.ts.map +0 -1
  348. package/dist/src/coin/near/keyPair.js +0 -73
  349. package/dist/src/coin/near/stakingActivateBuilder.d.ts +0 -32
  350. package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +0 -1
  351. package/dist/src/coin/near/stakingActivateBuilder.js +0 -90
  352. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +0 -32
  353. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +0 -1
  354. package/dist/src/coin/near/stakingDeactivateBuilder.js +0 -89
  355. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +0 -32
  356. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +0 -1
  357. package/dist/src/coin/near/stakingWithdrawBuilder.js +0 -89
  358. package/dist/src/coin/near/transaction.d.ts +0 -90
  359. package/dist/src/coin/near/transaction.d.ts.map +0 -1
  360. package/dist/src/coin/near/transaction.js +0 -368
  361. package/dist/src/coin/near/transactionBuilder.d.ts +0 -89
  362. package/dist/src/coin/near/transactionBuilder.d.ts.map +0 -1
  363. package/dist/src/coin/near/transactionBuilder.js +0 -216
  364. package/dist/src/coin/near/transactionBuilderFactory.d.ts +0 -30
  365. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +0 -1
  366. package/dist/src/coin/near/transactionBuilderFactory.js +0 -71
  367. package/dist/src/coin/near/transferBuilder.d.ts +0 -26
  368. package/dist/src/coin/near/transferBuilder.d.ts.map +0 -1
  369. package/dist/src/coin/near/transferBuilder.js +0 -72
  370. package/dist/src/coin/near/utils.d.ts +0 -42
  371. package/dist/src/coin/near/utils.d.ts.map +0 -1
  372. package/dist/src/coin/near/utils.js +0 -92
  373. package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -12
  374. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +0 -1
  375. package/dist/src/coin/near/walletInitializationBuilder.js +0 -20
  376. package/dist/src/coin/rbtc/index.d.ts +0 -8
  377. package/dist/src/coin/rbtc/index.d.ts.map +0 -1
  378. package/dist/src/coin/rbtc/index.js +0 -35
  379. package/dist/src/coin/rbtc/resources.d.ts +0 -10
  380. package/dist/src/coin/rbtc/resources.d.ts.map +0 -1
  381. package/dist/src/coin/rbtc/resources.js +0 -25
  382. package/dist/src/coin/rbtc/transactionBuilder.d.ts +0 -17
  383. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +0 -1
  384. package/dist/src/coin/rbtc/transactionBuilder.js +0 -44
  385. package/dist/src/coin/rbtc/transferBuilder.d.ts +0 -19
  386. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +0 -1
  387. package/dist/src/coin/rbtc/transferBuilder.js +0 -27
  388. package/dist/src/coin/rbtc/utils.d.ts +0 -18
  389. package/dist/src/coin/rbtc/utils.d.ts.map +0 -1
  390. package/dist/src/coin/rbtc/utils.js +0 -42
  391. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +0 -33
  392. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +0 -1
  393. package/dist/src/coin/sol/ataInitializationBuilder.js +0 -93
  394. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +0 -14
  395. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +0 -1
  396. package/dist/src/coin/sol/ataInitializationTransaction.js +0 -81
  397. package/dist/src/coin/sol/constants.d.ts +0 -58
  398. package/dist/src/coin/sol/constants.d.ts.map +0 -1
  399. package/dist/src/coin/sol/constants.js +0 -76
  400. package/dist/src/coin/sol/iface.d.ts +0 -99
  401. package/dist/src/coin/sol/iface.d.ts.map +0 -1
  402. package/dist/src/coin/sol/iface.js +0 -3
  403. package/dist/src/coin/sol/index.d.ts +0 -11
  404. package/dist/src/coin/sol/index.d.ts.map +0 -1
  405. package/dist/src/coin/sol/index.js +0 -41
  406. package/dist/src/coin/sol/instructionParamsFactory.d.ts +0 -12
  407. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +0 -1
  408. package/dist/src/coin/sol/instructionParamsFactory.js +0 -260
  409. package/dist/src/coin/sol/keyPair.d.ts +0 -26
  410. package/dist/src/coin/sol/keyPair.d.ts.map +0 -1
  411. package/dist/src/coin/sol/keyPair.js +0 -63
  412. package/dist/src/coin/sol/solInstructionFactory.d.ts +0 -10
  413. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +0 -1
  414. package/dist/src/coin/sol/solInstructionFactory.js +0 -213
  415. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +0 -41
  416. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +0 -1
  417. package/dist/src/coin/sol/stakingActivateBuilder.js +0 -94
  418. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +0 -23
  419. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +0 -1
  420. package/dist/src/coin/sol/stakingDeactivateBuilder.js +0 -62
  421. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +0 -31
  422. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +0 -1
  423. package/dist/src/coin/sol/stakingWithdrawBuilder.js +0 -78
  424. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +0 -85
  425. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +0 -1
  426. package/dist/src/coin/sol/tokenEncodeDecode.js +0 -133
  427. package/dist/src/coin/sol/tokenTransferBuilder.d.ts +0 -27
  428. package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +0 -1
  429. package/dist/src/coin/sol/tokenTransferBuilder.js +0 -73
  430. package/dist/src/coin/sol/transaction.d.ts +0 -61
  431. package/dist/src/coin/sol/transaction.d.ts.map +0 -1
  432. package/dist/src/coin/sol/transaction.js +0 -369
  433. package/dist/src/coin/sol/transactionBuilder.d.ts +0 -101
  434. package/dist/src/coin/sol/transactionBuilder.d.ts.map +0 -1
  435. package/dist/src/coin/sol/transactionBuilder.js +0 -261
  436. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +0 -76
  437. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +0 -1
  438. package/dist/src/coin/sol/transactionBuilderFactory.js +0 -136
  439. package/dist/src/coin/sol/transferBuilder.d.ts +0 -26
  440. package/dist/src/coin/sol/transferBuilder.d.ts.map +0 -1
  441. package/dist/src/coin/sol/transferBuilder.js +0 -67
  442. package/dist/src/coin/sol/utils.d.ts +0 -146
  443. package/dist/src/coin/sol/utils.d.ts.map +0 -1
  444. package/dist/src/coin/sol/utils.js +0 -361
  445. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +0 -26
  446. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +0 -1
  447. package/dist/src/coin/sol/walletInitializationBuilder.js +0 -71
  448. package/dist/src/coin/stx/abstractContractBuilder.d.ts +0 -19
  449. package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +0 -1
  450. package/dist/src/coin/stx/abstractContractBuilder.js +0 -70
  451. package/dist/src/coin/stx/constants.d.ts +0 -8
  452. package/dist/src/coin/stx/constants.d.ts.map +0 -1
  453. package/dist/src/coin/stx/constants.js +0 -19
  454. package/dist/src/coin/stx/contractBuilder.d.ts +0 -33
  455. package/dist/src/coin/stx/contractBuilder.d.ts.map +0 -1
  456. package/dist/src/coin/stx/contractBuilder.js +0 -116
  457. package/dist/src/coin/stx/iface.d.ts +0 -48
  458. package/dist/src/coin/stx/iface.d.ts.map +0 -1
  459. package/dist/src/coin/stx/iface.js +0 -3
  460. package/dist/src/coin/stx/index.d.ts +0 -6
  461. package/dist/src/coin/stx/index.d.ts.map +0 -1
  462. package/dist/src/coin/stx/index.js +0 -32
  463. package/dist/src/coin/stx/keyPair.d.ts +0 -55
  464. package/dist/src/coin/stx/keyPair.d.ts.map +0 -1
  465. package/dist/src/coin/stx/keyPair.js +0 -140
  466. package/dist/src/coin/stx/sendmanyBuilder.d.ts +0 -23
  467. package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +0 -1
  468. package/dist/src/coin/stx/sendmanyBuilder.js +0 -75
  469. package/dist/src/coin/stx/transaction.d.ts +0 -49
  470. package/dist/src/coin/stx/transaction.d.ts.map +0 -1
  471. package/dist/src/coin/stx/transaction.js +0 -225
  472. package/dist/src/coin/stx/transactionBuilder.d.ts +0 -86
  473. package/dist/src/coin/stx/transactionBuilder.d.ts.map +0 -1
  474. package/dist/src/coin/stx/transactionBuilder.js +0 -263
  475. package/dist/src/coin/stx/transactionBuilderFactory.d.ts +0 -30
  476. package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +0 -1
  477. package/dist/src/coin/stx/transactionBuilderFactory.js +0 -81
  478. package/dist/src/coin/stx/transferBuilder.d.ts +0 -30
  479. package/dist/src/coin/stx/transferBuilder.d.ts.map +0 -1
  480. package/dist/src/coin/stx/transferBuilder.js +0 -99
  481. package/dist/src/coin/stx/utils.d.ts +0 -207
  482. package/dist/src/coin/stx/utils.d.ts.map +0 -1
  483. package/dist/src/coin/stx/utils.js +0 -504
  484. package/dist/src/coin/trx/address.d.ts +0 -11
  485. package/dist/src/coin/trx/address.d.ts.map +0 -1
  486. package/dist/src/coin/trx/address.js +0 -13
  487. package/dist/src/coin/trx/contractCallBuilder.d.ts +0 -96
  488. package/dist/src/coin/trx/contractCallBuilder.d.ts.map +0 -1
  489. package/dist/src/coin/trx/contractCallBuilder.js +0 -281
  490. package/dist/src/coin/trx/enum.d.ts +0 -23
  491. package/dist/src/coin/trx/enum.d.ts.map +0 -1
  492. package/dist/src/coin/trx/enum.js +0 -28
  493. package/dist/src/coin/trx/iface.d.ts +0 -92
  494. package/dist/src/coin/trx/iface.d.ts.map +0 -1
  495. package/dist/src/coin/trx/iface.js +0 -3
  496. package/dist/src/coin/trx/index.d.ts +0 -10
  497. package/dist/src/coin/trx/index.d.ts.map +0 -1
  498. package/dist/src/coin/trx/index.js +0 -39
  499. package/dist/src/coin/trx/keyPair.d.ts +0 -44
  500. package/dist/src/coin/trx/keyPair.d.ts.map +0 -1
  501. package/dist/src/coin/trx/keyPair.js +0 -121
  502. package/dist/src/coin/trx/transaction.d.ts +0 -74
  503. package/dist/src/coin/trx/transaction.d.ts.map +0 -1
  504. package/dist/src/coin/trx/transaction.js +0 -205
  505. package/dist/src/coin/trx/transactionBuilder.d.ts +0 -65
  506. package/dist/src/coin/trx/transactionBuilder.d.ts.map +0 -1
  507. package/dist/src/coin/trx/transactionBuilder.js +0 -215
  508. package/dist/src/coin/trx/utils.d.ts +0 -127
  509. package/dist/src/coin/trx/utils.d.ts.map +0 -1
  510. package/dist/src/coin/trx/utils.js +0 -369
  511. package/dist/src/coin/trx/wrappedBuilder.d.ts +0 -52
  512. package/dist/src/coin/trx/wrappedBuilder.d.ts.map +0 -1
  513. package/dist/src/coin/trx/wrappedBuilder.js +0 -104
  514. package/dist/src/coin/xrp/index.d.ts +0 -5
  515. package/dist/src/coin/xrp/index.d.ts.map +0 -1
  516. package/dist/src/coin/xrp/index.js +0 -29
  517. package/dist/src/coin/xrp/keyPair.d.ts +0 -10
  518. package/dist/src/coin/xrp/keyPair.d.ts.map +0 -1
  519. package/dist/src/coin/xrp/keyPair.js +0 -16
  520. package/dist/src/coin/xrp/transaction.d.ts +0 -10
  521. package/dist/src/coin/xrp/transaction.d.ts.map +0 -1
  522. package/dist/src/coin/xrp/transaction.js +0 -20
  523. package/dist/src/coin/xrp/transactionBuilder.d.ts +0 -27
  524. package/dist/src/coin/xrp/transactionBuilder.d.ts.map +0 -1
  525. package/dist/src/coin/xrp/transactionBuilder.js +0 -46
  526. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +0 -24
  527. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +0 -1
  528. package/dist/src/coin/xrp/transactionBuilderFactory.js +0 -38
  529. package/dist/src/coin/xrp/transferBuilder.d.ts +0 -14
  530. package/dist/src/coin/xrp/transferBuilder.d.ts.map +0 -1
  531. package/dist/src/coin/xrp/transferBuilder.js +0 -24
  532. package/dist/src/coin/xrp/utils.d.ts +0 -16
  533. package/dist/src/coin/xrp/utils.d.ts.map +0 -1
  534. package/dist/src/coin/xrp/utils.js +0 -32
  535. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +0 -14
  536. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +0 -1
  537. package/dist/src/coin/xrp/walletInitializationBuilder.js +0 -24
  538. package/dist/src/coin/xtz/address.d.ts +0 -8
  539. package/dist/src/coin/xtz/address.d.ts.map +0 -1
  540. package/dist/src/coin/xtz/address.js +0 -10
  541. package/dist/src/coin/xtz/iface.d.ts +0 -81
  542. package/dist/src/coin/xtz/iface.d.ts.map +0 -1
  543. package/dist/src/coin/xtz/iface.js +0 -3
  544. package/dist/src/coin/xtz/index.d.ts +0 -8
  545. package/dist/src/coin/xtz/index.d.ts.map +0 -1
  546. package/dist/src/coin/xtz/index.js +0 -37
  547. package/dist/src/coin/xtz/keyPair.d.ts +0 -40
  548. package/dist/src/coin/xtz/keyPair.d.ts.map +0 -1
  549. package/dist/src/coin/xtz/keyPair.js +0 -136
  550. package/dist/src/coin/xtz/multisigUtils.d.ts +0 -134
  551. package/dist/src/coin/xtz/multisigUtils.d.ts.map +0 -1
  552. package/dist/src/coin/xtz/multisigUtils.js +0 -1180
  553. package/dist/src/coin/xtz/transaction.d.ts +0 -119
  554. package/dist/src/coin/xtz/transaction.d.ts.map +0 -1
  555. package/dist/src/coin/xtz/transaction.js +0 -315
  556. package/dist/src/coin/xtz/transactionBuilder.d.ts +0 -171
  557. package/dist/src/coin/xtz/transactionBuilder.d.ts.map +0 -1
  558. package/dist/src/coin/xtz/transactionBuilder.js +0 -453
  559. package/dist/src/coin/xtz/transferBuilder.d.ts +0 -24
  560. package/dist/src/coin/xtz/transferBuilder.d.ts.map +0 -1
  561. package/dist/src/coin/xtz/transferBuilder.js +0 -64
  562. package/dist/src/coin/xtz/utils.d.ts +0 -265
  563. package/dist/src/coin/xtz/utils.d.ts.map +0 -1
  564. package/dist/src/coin/xtz/utils.js +0 -460
  565. package/dist/src/mpc/curves/baseCurve.d.ts +0 -18
  566. package/dist/src/mpc/curves/baseCurve.d.ts.map +0 -1
  567. package/dist/src/mpc/curves/baseCurve.js +0 -6
  568. package/dist/src/mpc/curves/ed25519.d.ts +0 -17
  569. package/dist/src/mpc/curves/ed25519.d.ts.map +0 -1
  570. package/dist/src/mpc/curves/ed25519.js +0 -48
  571. package/dist/src/mpc/curves/index.d.ts +0 -5
  572. package/dist/src/mpc/curves/index.d.ts.map +0 -1
  573. package/dist/src/mpc/curves/index.js +0 -6
  574. package/dist/src/mpc/curves/secp256k1.d.ts +0 -16
  575. package/dist/src/mpc/curves/secp256k1.d.ts.map +0 -1
  576. package/dist/src/mpc/curves/secp256k1.js +0 -66
  577. package/dist/src/mpc/hdTree.d.ts +0 -24
  578. package/dist/src/mpc/hdTree.d.ts.map +0 -1
  579. package/dist/src/mpc/hdTree.js +0 -94
  580. package/dist/src/mpc/shamir.d.ts +0 -26
  581. package/dist/src/mpc/shamir.d.ts.map +0 -1
  582. package/dist/src/mpc/shamir.js +0 -86
  583. package/dist/src/mpc/tss/eddsa/eddsa.d.ts +0 -29
  584. package/dist/src/mpc/tss/eddsa/eddsa.d.ts.map +0 -1
  585. package/dist/src/mpc/tss/eddsa/eddsa.js +0 -273
  586. package/dist/src/mpc/tss/eddsa/index.d.ts +0 -4
  587. package/dist/src/mpc/tss/eddsa/index.d.ts.map +0 -1
  588. package/dist/src/mpc/tss/eddsa/index.js +0 -30
  589. package/dist/src/mpc/tss/eddsa/types.d.ts +0 -70
  590. package/dist/src/mpc/tss/eddsa/types.d.ts.map +0 -1
  591. package/dist/src/mpc/tss/eddsa/types.js +0 -3
  592. package/dist/src/mpc/tss/index.d.ts +0 -5
  593. package/dist/src/mpc/tss/index.d.ts.map +0 -1
  594. package/dist/src/mpc/tss/index.js +0 -32
  595. package/dist/src/mpc/tss.d.ts +0 -98
  596. package/dist/src/mpc/tss.d.ts.map +0 -1
  597. package/dist/src/mpc/tss.js +0 -277
  598. package/dist/src/mpc/util.d.ts +0 -7
  599. package/dist/src/mpc/util.d.ts.map +0 -1
  600. package/dist/src/mpc/util.js +0 -38
  601. package/dist/src/utils/crypto.d.ts +0 -99
  602. package/dist/src/utils/crypto.d.ts.map +0 -1
  603. package/dist/src/utils/crypto.js +0 -260
  604. package/dist/src/utils/ed25519KeyDeriver.d.ts +0 -49
  605. package/dist/src/utils/ed25519KeyDeriver.d.ts.map +0 -1
  606. package/dist/src/utils/ed25519KeyDeriver.js +0 -92
  607. package/resources/hbar/protobuf/BasicTypes.proto +0 -424
  608. package/resources/hbar/protobuf/CryptoCreate.proto +0 -47
  609. package/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
  610. package/resources/hbar/protobuf/Duration.proto +0 -28
  611. package/resources/hbar/protobuf/Timestamp.proto +0 -34
  612. package/resources/hbar/protobuf/Transaction.proto +0 -35
  613. package/resources/hbar/protobuf/TransactionBody.proto +0 -24
  614. package/resources/hbar/protobuf/TransactionContents.proto +0 -33
  615. package/resources/hbar/protobuf/hedera.d.ts +0 -4612
  616. package/resources/hbar/protobuf/hedera.js +0 -12192
  617. package/resources/trx/protobuf/Contract.proto +0 -256
  618. package/resources/trx/protobuf/Discover.proto +0 -44
  619. package/resources/trx/protobuf/tron.d.ts +0 -11024
  620. package/resources/trx/protobuf/tron.js +0 -31510
  621. package/resources/trx/protobuf/tron.proto +0 -677
@@ -1,485 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getToken = exports.getBufferedByteCode = exports.getRawDecoded = exports.hasSignature = exports.toStringSig = exports.getProxyInitcode = exports.calculateForwarderV1Address = exports.calculateForwarderAddress = exports.hexStringToNumber = exports.numberToHexString = exports.classifyTransaction = exports.decodeFlushTokensData = exports.decodeNativeTransferData = exports.decodeERC1155TransferData = exports.decodeERC721TransferData = exports.decodeTokenTransferData = exports.decodeTransferData = exports.decodeWalletCreationData = exports.isValidAmount = exports.isValidEthAddress = exports.getAddressInitializationData = exports.flushCoinsData = exports.flushTokensData = exports.sendMultiSigTokenData = exports.sendMultiSigData = exports.sign = exports.signInternal = exports.getCommon = void 0;
7
- const buffer_1 = require("buffer");
8
- const assert_1 = __importDefault(require("assert"));
9
- const ethereumjs_utils_old_1 = require("ethereumjs-utils-old");
10
- const ethereumjs_util_1 = require("ethereumjs-util");
11
- const statics_1 = require("@bitgo/statics");
12
- const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
13
- const common_1 = __importDefault(require("@ethereumjs/common"));
14
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
15
- const sdk_core_1 = require("@bitgo/sdk-core");
16
- const stakingUtils_1 = require("../celo/stakingUtils");
17
- const walletUtil_1 = require("./walletUtil");
18
- const types_1 = require("./types");
19
- /**
20
- * @param network
21
- */
22
- function getCommon(network) {
23
- return common_1.default.forCustomChain(
24
- // use the mainnet config as a base, override chain ids and network name
25
- 'mainnet', {
26
- name: network.type,
27
- networkId: network.chainId,
28
- chainId: network.chainId,
29
- }, 'london');
30
- }
31
- exports.getCommon = getCommon;
32
- /**
33
- * Signs the transaction using the appropriate algorithm
34
- * and the provided common for the blockchain
35
- *
36
- * @param {TxData} transactionData the transaction data to sign
37
- * @param {KeyPair} keyPair the signer's keypair
38
- * @param {EthereumCommon} customCommon the network's custom common
39
- * @returns {string} the transaction signed and encoded
40
- */
41
- async function signInternal(transactionData, keyPair, customCommon) {
42
- if (!keyPair.getKeys().prv) {
43
- throw new sdk_core_1.SigningError('Missing private key');
44
- }
45
- const ethTx = types_1.EthTransactionData.fromJson(transactionData, customCommon);
46
- ethTx.sign(keyPair);
47
- return ethTx.toSerialized();
48
- }
49
- exports.signInternal = signInternal;
50
- /**
51
- * Signs the transaction using the appropriate algorithm
52
- *
53
- * @param {TxData} transactionData the transaction data to sign
54
- * @param {KeyPair} keyPair the signer's keypair
55
- * @returns {string} the transaction signed and encoded
56
- */
57
- async function sign(transactionData, keyPair) {
58
- return signInternal(transactionData, keyPair, getCommon(statics_1.coins.get('teth').network));
59
- }
60
- exports.sign = sign;
61
- /**
62
- * Returns the contract method encoded data
63
- *
64
- * @param {string} to destination address
65
- * @param {number} value Amount to tranfer
66
- * @param {string} data aditional method call data
67
- * @param {number} expireTime expiration time for the transaction in seconds
68
- * @param {number} sequenceId sequence id
69
- * @param {string} signature signature of the call
70
- * @returns {string} -- the contract method encoded data
71
- */
72
- function sendMultiSigData(to, value, data, expireTime, sequenceId, signature) {
73
- const params = [to, value, ethereumjs_utils_old_1.toBuffer(data), expireTime, sequenceId, ethereumjs_utils_old_1.toBuffer(signature)];
74
- const method = ethereumjs_abi_1.default.methodID('sendMultiSig', walletUtil_1.sendMultiSigTypes);
75
- const args = ethereumjs_abi_1.default.rawEncode(walletUtil_1.sendMultiSigTypes, params);
76
- return ethereumjs_utils_old_1.addHexPrefix(buffer_1.Buffer.concat([method, args]).toString('hex'));
77
- }
78
- exports.sendMultiSigData = sendMultiSigData;
79
- /**
80
- * Returns the contract method encoded data
81
- *
82
- * @param {string} to destination address
83
- * @param {number} value Amount to tranfer
84
- * @param {string} tokenContractAddress the address of the erc20 token contract
85
- * @param {number} expireTime expiration time for the transaction in seconds
86
- * @param {number} sequenceId sequence id
87
- * @param {string} signature signature of the call
88
- * @returns {string} -- the contract method encoded data
89
- */
90
- function sendMultiSigTokenData(to, value, tokenContractAddress, expireTime, sequenceId, signature) {
91
- const params = [to, value, tokenContractAddress, expireTime, sequenceId, ethereumjs_utils_old_1.toBuffer(signature)];
92
- const method = ethereumjs_abi_1.default.methodID('sendMultiSigToken', walletUtil_1.sendMultiSigTokenTypes);
93
- const args = ethereumjs_abi_1.default.rawEncode(walletUtil_1.sendMultiSigTokenTypes, params);
94
- return ethereumjs_utils_old_1.addHexPrefix(buffer_1.Buffer.concat([method, args]).toString('hex'));
95
- }
96
- exports.sendMultiSigTokenData = sendMultiSigTokenData;
97
- /**
98
- * Get the data required to make a flush tokens contract call
99
- *
100
- * @param forwarderAddress The forwarder address to flush
101
- * @param tokenAddress The token address to flush from
102
- */
103
- function flushTokensData(forwarderAddress, tokenAddress) {
104
- const params = [forwarderAddress, tokenAddress];
105
- const method = ethereumjs_abi_1.default.methodID('flushForwarderTokens', walletUtil_1.flushTokensTypes);
106
- const args = ethereumjs_abi_1.default.rawEncode(walletUtil_1.flushTokensTypes, params);
107
- return ethereumjs_utils_old_1.addHexPrefix(buffer_1.Buffer.concat([method, args]).toString('hex'));
108
- }
109
- exports.flushTokensData = flushTokensData;
110
- /**
111
- * Get the data required to make a flush native coins contract call
112
- */
113
- function flushCoinsData() {
114
- const params = [];
115
- const method = ethereumjs_abi_1.default.methodID('flush', walletUtil_1.flushCoinsTypes);
116
- const args = ethereumjs_abi_1.default.rawEncode(walletUtil_1.flushCoinsTypes, params);
117
- return ethereumjs_utils_old_1.addHexPrefix(buffer_1.Buffer.concat([method, args]).toString('hex'));
118
- }
119
- exports.flushCoinsData = flushCoinsData;
120
- /**
121
- * Returns the create forwarder method calling data
122
- *
123
- * @returns {string} - the createForwarder method encoded
124
- */
125
- function getAddressInitializationData() {
126
- return walletUtil_1.createForwarderMethodId;
127
- }
128
- exports.getAddressInitializationData = getAddressInitializationData;
129
- /**
130
- * Returns whether or not the string is a valid Eth address
131
- *
132
- * @param {string} address - the tx hash to validate
133
- * @returns {boolean} - the validation result
134
- */
135
- function isValidEthAddress(address) {
136
- return ethereumjs_utils_old_1.isValidAddress(address);
137
- }
138
- exports.isValidEthAddress = isValidEthAddress;
139
- /**
140
- * Returns whether or not the string is a valid amount number
141
- *
142
- * @param {string} amount - the string to validate
143
- * @returns {boolean} - the validation result
144
- */
145
- function isValidAmount(amount) {
146
- const bigNumberAmount = new bignumber_js_1.default(amount);
147
- return bigNumberAmount.isInteger() && bigNumberAmount.isGreaterThanOrEqualTo(0);
148
- }
149
- exports.isValidAmount = isValidAmount;
150
- /**
151
- * Returns the smart contract encoded data
152
- *
153
- * @param {string} data The wallet creation data to decode
154
- * @returns {string[]} - The list of signer addresses
155
- */
156
- function decodeWalletCreationData(data) {
157
- if (!data.startsWith(walletUtil_1.walletInitializationFirstBytes)) {
158
- throw new sdk_core_1.BuildTransactionError(`Invalid wallet bytecode: ${data}`);
159
- }
160
- const dataBuffer = buffer_1.Buffer.from(data.slice(2), 'hex');
161
- // the last 160 bytes contain the serialized address array
162
- const serializedSigners = dataBuffer.slice(-160);
163
- const resultEncodedParameters = ethereumjs_abi_1.default.rawDecode(walletUtil_1.walletSimpleConstructor, serializedSigners);
164
- if (resultEncodedParameters.length !== 1) {
165
- throw new sdk_core_1.BuildTransactionError(`Could not decode wallet constructor bytecode: ${resultEncodedParameters}`);
166
- }
167
- const addresses = resultEncodedParameters[0];
168
- if (addresses.length !== 3) {
169
- throw new sdk_core_1.BuildTransactionError(`invalid number of addresses in parsed constructor: ${addresses}`);
170
- }
171
- // sometimes ethereumjs-abi removes 0 padding at the start of addresses,
172
- // so we should pad until they are the standard 20 bytes
173
- const paddedAddresses = addresses.map((address) => ethereumjs_utils_old_1.stripHexPrefix(address.toString('hex')).padStart(40, '0'));
174
- return paddedAddresses.map((address) => ethereumjs_utils_old_1.addHexPrefix(address));
175
- }
176
- exports.decodeWalletCreationData = decodeWalletCreationData;
177
- /**
178
- * Decode the given ABI-encoded transfer data and return parsed fields
179
- *
180
- * @param data The data to decode
181
- * @returns parsed transfer data
182
- */
183
- function decodeTransferData(data) {
184
- if (data.startsWith(walletUtil_1.sendMultisigMethodId)) {
185
- return decodeNativeTransferData(data);
186
- }
187
- else if (data.startsWith(walletUtil_1.sendMultisigTokenMethodId)) {
188
- return decodeTokenTransferData(data);
189
- }
190
- else {
191
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
192
- }
193
- }
194
- exports.decodeTransferData = decodeTransferData;
195
- /**
196
- * Decode the given ABI-encoded transfer data for the sendMultisigToken function and return parsed fields
197
- *
198
- * @param data The data to decode
199
- * @returns parsed token transfer data
200
- */
201
- function decodeTokenTransferData(data) {
202
- if (!data.startsWith(walletUtil_1.sendMultisigTokenMethodId)) {
203
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
204
- }
205
- const [to, amount, tokenContractAddress, expireTime, sequenceId, signature] = getRawDecoded(walletUtil_1.sendMultiSigTokenTypes, getBufferedByteCode(walletUtil_1.sendMultisigTokenMethodId, data));
206
- return {
207
- to: ethereumjs_utils_old_1.addHexPrefix(to),
208
- amount: new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(amount)).toFixed(),
209
- expireTime: ethereumjs_utils_old_1.bufferToInt(expireTime),
210
- sequenceId: ethereumjs_utils_old_1.bufferToInt(sequenceId),
211
- signature: ethereumjs_utils_old_1.bufferToHex(signature),
212
- tokenContractAddress: ethereumjs_utils_old_1.addHexPrefix(tokenContractAddress),
213
- };
214
- }
215
- exports.decodeTokenTransferData = decodeTokenTransferData;
216
- function decodeERC721TransferData(data) {
217
- if (!data.startsWith(walletUtil_1.sendMultisigMethodId)) {
218
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
219
- }
220
- const [to, amount, internalData, expireTime, sequenceId, signature] = getRawDecoded(walletUtil_1.sendMultiSigTypes, getBufferedByteCode(walletUtil_1.sendMultisigMethodId, data));
221
- const internalDataHex = ethereumjs_utils_old_1.bufferToHex(internalData);
222
- if (!internalDataHex.startsWith(walletUtil_1.ERC721SafeTransferTypeMethodId)) {
223
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
224
- }
225
- const [from, receiver, tokenId, userSentData] = getRawDecoded(walletUtil_1.ERC721SafeTransferTypes, getBufferedByteCode(walletUtil_1.ERC721SafeTransferTypeMethodId, internalDataHex));
226
- return {
227
- to: ethereumjs_utils_old_1.addHexPrefix(receiver),
228
- from: ethereumjs_utils_old_1.addHexPrefix(from),
229
- expireTime: ethereumjs_utils_old_1.bufferToInt(expireTime),
230
- amount: new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(amount)).toFixed(),
231
- tokenId: new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(tokenId)).toFixed(),
232
- sequenceId: ethereumjs_utils_old_1.bufferToInt(sequenceId),
233
- signature: ethereumjs_utils_old_1.bufferToHex(signature),
234
- tokenContractAddress: ethereumjs_utils_old_1.addHexPrefix(to),
235
- userData: ethereumjs_utils_old_1.bufferToHex(userSentData),
236
- };
237
- }
238
- exports.decodeERC721TransferData = decodeERC721TransferData;
239
- function decodeERC1155TransferData(data) {
240
- let from, receiver, userSentData;
241
- let tokenIds;
242
- let values;
243
- if (!data.startsWith(walletUtil_1.sendMultisigMethodId)) {
244
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
245
- }
246
- const [to, amount, internalData, expireTime, sequenceId, signature] = getRawDecoded(walletUtil_1.sendMultiSigTypes, getBufferedByteCode(walletUtil_1.sendMultisigMethodId, data));
247
- const internalDataHex = ethereumjs_utils_old_1.bufferToHex(internalData);
248
- if (internalDataHex.startsWith(walletUtil_1.ERC1155SafeTransferTypeMethodId)) {
249
- let tokenId;
250
- let value;
251
- [from, receiver, tokenId, value, userSentData] = getRawDecoded(walletUtil_1.ERC1155SafeTransferTypes, getBufferedByteCode(walletUtil_1.ERC1155SafeTransferTypeMethodId, internalDataHex));
252
- tokenIds = [new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(tokenId)).toFixed()];
253
- values = [new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(value)).toFixed()];
254
- }
255
- else if (ethereumjs_utils_old_1.bufferToHex(internalData).startsWith(walletUtil_1.ERC1155BatchTransferTypeMethodId)) {
256
- let tempTokenIds, tempValues;
257
- [from, receiver, tempTokenIds, tempValues, userSentData] = getRawDecoded(walletUtil_1.ERC1155BatchTransferTypes, getBufferedByteCode(walletUtil_1.ERC1155BatchTransferTypeMethodId, internalDataHex));
258
- tokenIds = tempTokenIds.map((x) => new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(x)).toFixed());
259
- values = tempValues.map((x) => new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(x)).toFixed());
260
- }
261
- else {
262
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
263
- }
264
- return {
265
- to: ethereumjs_utils_old_1.addHexPrefix(receiver),
266
- from: ethereumjs_utils_old_1.addHexPrefix(from),
267
- expireTime: ethereumjs_utils_old_1.bufferToInt(expireTime),
268
- amount: new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(amount)).toFixed(),
269
- tokenIds,
270
- values,
271
- sequenceId: ethereumjs_utils_old_1.bufferToInt(sequenceId),
272
- signature: ethereumjs_utils_old_1.bufferToHex(signature),
273
- tokenContractAddress: ethereumjs_utils_old_1.addHexPrefix(to),
274
- userData: userSentData,
275
- };
276
- }
277
- exports.decodeERC1155TransferData = decodeERC1155TransferData;
278
- /**
279
- * Decode the given ABI-encoded transfer data for the sendMultisig function and return parsed fields
280
- *
281
- * @param data The data to decode
282
- * @returns parsed transfer data
283
- */
284
- function decodeNativeTransferData(data) {
285
- if (!data.startsWith(walletUtil_1.sendMultisigMethodId)) {
286
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
287
- }
288
- const [to, amount, internalData, expireTime, sequenceId, signature] = getRawDecoded(walletUtil_1.sendMultiSigTypes, getBufferedByteCode(walletUtil_1.sendMultisigMethodId, data));
289
- return {
290
- to: ethereumjs_utils_old_1.addHexPrefix(to),
291
- amount: new bignumber_js_1.default(ethereumjs_utils_old_1.bufferToHex(amount)).toFixed(),
292
- expireTime: ethereumjs_utils_old_1.bufferToInt(expireTime),
293
- sequenceId: ethereumjs_utils_old_1.bufferToInt(sequenceId),
294
- signature: ethereumjs_utils_old_1.bufferToHex(signature),
295
- data: ethereumjs_utils_old_1.bufferToHex(internalData),
296
- };
297
- }
298
- exports.decodeNativeTransferData = decodeNativeTransferData;
299
- /**
300
- * Decode the given ABI-encoded flush tokens data and return parsed fields
301
- *
302
- * @param data The data to decode
303
- * @returns parsed transfer data
304
- */
305
- function decodeFlushTokensData(data) {
306
- if (!data.startsWith(walletUtil_1.flushForwarderTokensMethodId)) {
307
- throw new sdk_core_1.BuildTransactionError(`Invalid transfer bytecode: ${data}`);
308
- }
309
- const [forwarderAddress, tokenAddress] = getRawDecoded(walletUtil_1.flushTokensTypes, getBufferedByteCode(walletUtil_1.flushForwarderTokensMethodId, data));
310
- return {
311
- forwarderAddress: ethereumjs_utils_old_1.addHexPrefix(forwarderAddress),
312
- tokenAddress: ethereumjs_utils_old_1.addHexPrefix(tokenAddress),
313
- };
314
- }
315
- exports.decodeFlushTokensData = decodeFlushTokensData;
316
- /**
317
- * Classify the given transaction data based as a transaction type.
318
- * ETH transactions are defined by the first 8 bytes of the transaction data, also known as the method id
319
- *
320
- * @param {string} data The data to classify the transaction with
321
- * @returns {TransactionType} The classified transaction type
322
- */
323
- function classifyTransaction(data) {
324
- if (data.length < 10) {
325
- // contract calls must have at least 4 bytes (method id) and '0x'
326
- // if it doesn't have enough data to be a contract call it must be a single sig send
327
- return sdk_core_1.TransactionType.SingleSigSend;
328
- }
329
- // TODO(STLX-1970): validate if we are going to constraint to some methods allowed
330
- let transactionType = transactionTypesMap[data.slice(0, 10).toLowerCase()];
331
- if (transactionType === undefined) {
332
- transactionType = sdk_core_1.TransactionType.ContractCall;
333
- }
334
- return transactionType;
335
- }
336
- exports.classifyTransaction = classifyTransaction;
337
- /**
338
- * A transaction types map according to the starting part of the encoded data
339
- */
340
- const transactionTypesMap = {
341
- [walletUtil_1.walletInitializationFirstBytes]: sdk_core_1.TransactionType.WalletInitialization,
342
- [walletUtil_1.createForwarderMethodId]: sdk_core_1.TransactionType.AddressInitialization,
343
- [walletUtil_1.sendMultisigMethodId]: sdk_core_1.TransactionType.Send,
344
- [walletUtil_1.flushForwarderTokensMethodId]: sdk_core_1.TransactionType.FlushTokens,
345
- [walletUtil_1.flushCoinsMethodId]: sdk_core_1.TransactionType.FlushCoins,
346
- [walletUtil_1.sendMultisigTokenMethodId]: sdk_core_1.TransactionType.Send,
347
- [stakingUtils_1.LockMethodId]: sdk_core_1.TransactionType.StakingLock,
348
- [stakingUtils_1.VoteMethodId]: sdk_core_1.TransactionType.StakingVote,
349
- [stakingUtils_1.ActivateMethodId]: sdk_core_1.TransactionType.StakingActivate,
350
- [stakingUtils_1.UnvoteMethodId]: sdk_core_1.TransactionType.StakingUnvote,
351
- [stakingUtils_1.UnlockMethodId]: sdk_core_1.TransactionType.StakingUnlock,
352
- [stakingUtils_1.WithdrawMethodId]: sdk_core_1.TransactionType.StakingWithdraw,
353
- };
354
- /**
355
- *
356
- * @param {number} num number to be converted to hex
357
- * @returns {string} the hex number
358
- */
359
- function numberToHexString(num) {
360
- const hex = num.toString(16);
361
- return hex.length % 2 === 0 ? '0x' + hex : '0x0' + hex;
362
- }
363
- exports.numberToHexString = numberToHexString;
364
- /**
365
- *
366
- * @param {string} hex The hex string to be converted
367
- * @returns {number} the resulting number
368
- */
369
- function hexStringToNumber(hex) {
370
- return parseInt(hex.slice(2), 16);
371
- }
372
- exports.hexStringToNumber = hexStringToNumber;
373
- /**
374
- * Generates an address of the forwarder address to be deployed
375
- *
376
- * @param {string} contractAddress the address which is creating this new address
377
- * @param {number} contractCounter the nonce of the contract address
378
- * @returns {string} the calculated forwarder contract address
379
- */
380
- function calculateForwarderAddress(contractAddress, contractCounter) {
381
- const forwarderAddress = ethereumjs_utils_old_1.generateAddress(contractAddress, contractCounter);
382
- return ethereumjs_utils_old_1.addHexPrefix(forwarderAddress.toString('hex'));
383
- }
384
- exports.calculateForwarderAddress = calculateForwarderAddress;
385
- /**
386
- * Calculate the forwarder v1 address that will be generated if `creatorAddress` creates it with salt `salt`
387
- * and initcode `inicode using the create2 opcode
388
- * @param {string} creatorAddress The address that is sending the tx to create a new address, hex string
389
- * @param {string} salt The salt to create the address with using create2, hex string
390
- * @param {string} initcode The initcode that will be deployed to the address, hex string
391
- * @return {string} The calculated address
392
- */
393
- function calculateForwarderV1Address(creatorAddress, salt, initcode) {
394
- const forwarderV1Address = ethereumjs_util_1.generateAddress2(buffer_1.Buffer.from(ethereumjs_utils_old_1.stripHexPrefix(creatorAddress), 'hex'), buffer_1.Buffer.from(ethereumjs_utils_old_1.stripHexPrefix(salt), 'hex'), buffer_1.Buffer.from(ethereumjs_utils_old_1.stripHexPrefix(initcode), 'hex'));
395
- return ethereumjs_utils_old_1.addHexPrefix(forwarderV1Address.toString('hex'));
396
- }
397
- exports.calculateForwarderV1Address = calculateForwarderV1Address;
398
- /**
399
- * Take the implementation address for the proxy contract, and get the binary initcode for the associated proxy
400
- * @param {string} implementationAddress The address of the implementation contract for the proxy
401
- * @return {string} Binary hex string of the proxy
402
- */
403
- function getProxyInitcode(implementationAddress) {
404
- const target = ethereumjs_utils_old_1.stripHexPrefix(implementationAddress.toLowerCase()).padStart(40, '0');
405
- // bytecode of the proxy, from:
406
- // https://github.com/BitGo/eth-multisig-v4/blob/d546a937f90f93e83b3423a5bf933d1d77c677c3/contracts/CloneFactory.sol#L42-L56
407
- return `0x3d602d80600a3d3981f3363d3d373d3d3d363d73${target}5af43d82803e903d91602b57fd5bf3`;
408
- }
409
- exports.getProxyInitcode = getProxyInitcode;
410
- /**
411
- * Convert the given signature parts to a string representation
412
- *
413
- * @param {SignatureParts} sig The signature to convert to string
414
- * @returns {string} String representation of the signature
415
- */
416
- function toStringSig(sig) {
417
- return ethereumjs_utils_old_1.bufferToHex(buffer_1.Buffer.concat([ethereumjs_utils_old_1.setLengthLeft(sig.r, 32), ethereumjs_utils_old_1.setLengthLeft(sig.s, 32), ethereumjs_utils_old_1.toBuffer(sig.v)]));
418
- }
419
- exports.toStringSig = toStringSig;
420
- /**
421
- * Return whether or not the given tx data has a signature
422
- *
423
- * @param {TxData} txData The transaction data to check for signature
424
- * @returns {boolean} true if the tx has a signature, else false
425
- */
426
- function hasSignature(txData) {
427
- return (txData.v !== undefined &&
428
- txData.r !== undefined &&
429
- txData.s !== undefined &&
430
- txData.v.length > 0 &&
431
- txData.r.length > 0 &&
432
- txData.s.length > 0);
433
- }
434
- exports.hasSignature = hasSignature;
435
- /**
436
- * Get the raw data decoded for some types
437
- *
438
- * @param {string[]} types ABI types definition
439
- * @param {Buffer} serializedArgs encoded args
440
- * @returns {Buffer[]} the decoded raw
441
- */
442
- function getRawDecoded(types, serializedArgs) {
443
- return ethereumjs_abi_1.default.rawDecode(types, serializedArgs);
444
- }
445
- exports.getRawDecoded = getRawDecoded;
446
- /**
447
- * Get the buffered bytecode from rawData using a methodId as delimiter
448
- *
449
- * @param {string} methodId the hex encoded method Id
450
- * @param {string} rawData the hex encoded raw data
451
- * @returns {Buffer} data buffered bytecode
452
- */
453
- function getBufferedByteCode(methodId, rawData) {
454
- const splitBytecode = rawData.split(methodId);
455
- if (splitBytecode.length !== 2) {
456
- throw new sdk_core_1.BuildTransactionError(`Invalid send bytecode: ${rawData}`);
457
- }
458
- return buffer_1.Buffer.from(splitBytecode[1], 'hex');
459
- }
460
- exports.getBufferedByteCode = getBufferedByteCode;
461
- /**
462
- * Get the statics coin object matching a given contract address if it exists
463
- *
464
- * @param tokenContractAddress The contract address to match against
465
- * @returns statics BaseCoin object for the matching token
466
- */
467
- function getToken(tokenContractAddress, network) {
468
- const tokens = statics_1.coins.filter((coin) => {
469
- if (coin instanceof statics_1.ContractAddressDefinedToken) {
470
- return (coin.network.type === network.type && coin.contractAddress.toLowerCase() === tokenContractAddress.toLowerCase());
471
- }
472
- return false;
473
- });
474
- // if length of tokens is 1, return the first, else return undefined
475
- // Can't directly index into tokens, or call `length`, so we use map to get an array
476
- const tokensArray = tokens.map((token) => token);
477
- if (tokensArray.length >= 1) {
478
- // there should never be two tokens with the same contract address, so we assert that here
479
- assert_1.default(tokensArray.length === 1);
480
- return tokensArray[0];
481
- }
482
- return undefined;
483
- }
484
- exports.getToken = getToken;
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9ldGgvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQWdDO0FBQ2hDLG9EQUE0QjtBQUM1QiwrREFTOEI7QUFDOUIscURBQW1EO0FBQ25ELDRDQUE0RztBQUM1RyxvRUFBeUM7QUFDekMsZ0VBQWdEO0FBRWhELGdFQUFxQztBQUNyQyw4Q0FBdUY7QUFDdkYsdURBTzhCO0FBWTlCLDZDQWtCc0I7QUFDdEIsbUNBQTZDO0FBRTdDOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE9BQXdCO0lBQ2hELE9BQU8sZ0JBQWMsQ0FBQyxjQUFjO0lBQ2xDLHdFQUF3RTtJQUN4RSxTQUFTLEVBQ1Q7UUFDRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztLQUN6QixFQUNELFFBQVEsQ0FDVCxDQUFDO0FBQ0osQ0FBQztBQVhELDhCQVdDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsWUFBWSxDQUNoQyxlQUF1QixFQUN2QixPQUFnQixFQUNoQixZQUE0QjtJQUU1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRTtRQUMxQixNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsTUFBTSxLQUFLLEdBQUcsMEJBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFYRCxvQ0FXQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxJQUFJLENBQUMsZUFBdUIs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QywwQkFBMEIsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUN0RTtJQUNELE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQU5ELGtEQU1DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixRQUFRLENBQUMsb0JBQTRCLEVBQUUsT0FBb0I7SUFDekUsTUFBTSxNQUFNLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ25DLElBQUksSUFBSSxZQUFZLHFDQUEyQixFQUFFO1lBQy9DLE9BQU8sQ0FDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLEtBQUssb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQ2hILENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxvRUFBb0U7SUFDcEUsb0ZBQW9GO0lBQ3BGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUksV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDM0IsMEZBQTBGO1FBQzFGLGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2QjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFuQkQsNEJBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIGFkZEhleFByZWZpeCxcbiAgYnVmZmVyVG9IZXgsXG4gIGJ1ZmZlclRvSW50LFxuICBnZW5lcmF0ZUFkZHJlc3MsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBzZXRMZW5ndGhMZWZ0LFxuICBzdHJpcEhleFByZWZpeCxcbiAgdG9CdWZmZXIsXG59IGZyb20gJ2V0aGVyZXVtanMtdXRpbHMtb2xkJztcbmltcG9ydCB7IGdlbmVyYXRlQWRkcmVzczIgfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIEJhc2VOZXR3b3JrLCBjb2lucywgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBCTiBmcm9tICdibi5qcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlTWV0aG9kSWQsXG4gIExvY2tNZXRob2RJZCxcbiAgVW5sb2NrTWV0aG9kSWQsXG4gIFVudm90ZU1ldGhvZElkLFxuICBWb3RlTWV0aG9kSWQsXG4gIFdpdGhkcmF3TWV0aG9kSWQsXG59IGZyb20gJy4uL2NlbG8vc3Rha2luZ1V0aWxzJztcbmltcG9ydCB7XG4gIEVSQzExNTVUcmFuc2ZlckRhdGEsXG4gIEVSQzcyMVRyYW5zZmVyRGF0YSxcbiAgRmx1c2hUb2tlbnNEYXRhLFxuICBOYXRpdmVUcmFuc2ZlckRhdGEsXG4gIFNpZ25hdHVyZVBhcnRzLFxuICBUb2tlblRyYW5zZmVyRGF0YSxcbiAgVHJhbnNmZXJEYXRhLFxuICBUeERhdGEsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBjcmVhdGVGb3J3YXJkZXJNZXRob2RJZCxcbiAgRVJDMTE1NUJhdGNoVHJhbnNmZXJUeXBlTWV0aG9kSWQsXG4gIEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZXMsXG4gIEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQsXG4gIEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlcyxcbiAgRVJDNzIxU2FmZVRyYW5zZmVyVHlwZU1ldGhvZElkLFxuICBFUkM3MjFTYWZlVHJhbnNmZXJUeXBlcyxcbiAgZmx1c2hDb2luc01ldGhvZElkLFxuICBmbHVzaENvaW5zVHlwZXMsXG4gIGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQsXG4gIGZsdXNoVG9rZW5zVHlwZXMsXG4gIHNlbmRNdWx0aXNpZ01ldGhvZElkLFxuICBzZW5kTXVsdGlzaWdUb2tlbk1ldGhvZElkLFxuICBzZW5kTXVsdGlTaWdUb2tlblR5cGVzLFxuICBzZW5kTXVsdGlTaWdUeXBlcyxcbiAgd2FsbGV0SW5pdGlhbGl6YXRpb25GaXJzdEJ5dGVzLFxuICB3YWxsZXRTaW1wbGVDb25zdHJ1Y3Rvcixcbn0gZnJvbSAnLi93YWxsZXRVdGlsJztcbmltcG9ydCB7IEV0aFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb24obmV0d29yazogRXRoZXJldW1OZXR3b3JrKTogRXRoZXJldW1Db21tb24ge1xuICByZXR1cm4gRXRoZXJldW1Db21tb24uZm9yQ3VzdG9tQ2hhaW4oXG4gICAgLy8gdXNlIHRoZSBtYWlubmV0IGNvbmZpZyBhcyBhIGJhc2UsIG92ZXJyaWRlIGNoYWluIGlkcyBhbmQgbmV0d29yayBuYW1lXG4gICAgJ21haW5uZXQnLFxuICAgIHtcbiAgICAgIG5hbWU6IG5ldHdvcmsudHlwZSxcbiAgICAgIG5ldHdvcmtJZDogbmV0d29yay5jaGFpbklkLFxuICAgICAgY2hhaW5JZDogbmV0d29yay5jaGFpbklkLFxuICAgIH0sXG4gICAgJ2xvbmRvbicsXG4gICk7XG59XG5cbi8qKlxuICogU2lnbnMgdGhlIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBhbGdvcml0aG1cbiAqIGFuZCB0aGUgcHJvdmlkZWQgY29tbW9uIGZvciB0aGUgYmxvY2tjaGFpblxuICpcbiAqIEBwYXJhbSB7VHhEYXRhfSB0cmFuc2FjdGlvbkRhdGEgdGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gc2lnblxuICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIHRoZSBzaWduZXIncyBrZXlwYWlyXG4gKiBAcGFyYW0ge0V0aGVyZXVtQ29tbW9ufSBjdXN0b21Db21tb24gdGhlIG5ldHdvcmsncyBjdXN0b20gY29tbW9uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgdHJhbnNhY3Rpb24gc2lnbmVkIGFuZCBlbmNvZGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaWduSW50ZXJuYWwoXG4gIHRyYW5zYWN0aW9uRGF0YTogVHhEYXRhLFxuICBrZXlQYWlyOiBLZXlQYWlyLFxuICBjdXN0b21Db21tb246IEV0aGVyZXVtQ29tbW9uLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gIH1cbiAgY29uc3QgZXRoVHggPSBFdGhUcmFuc2FjdGlvbkRhdGEuZnJvbUpzb24odHJhbnNhY3Rpb25EYXRhLCBjdXN0b21Db21tb24pO1xuICBldGhUeC5zaWduKGtleVBhaXIpO1xuICByZXR1cm4gZXRoVHgudG9TZXJpYWxpemVkKCk7XG59XG5cbi8qKlxuICogU2lnbnMgdGhlIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBhbGdvcml0aG1cbiAqXG4gKiBAcGFyYW0ge1R4RGF0YX0gdHJhbnNhY3Rpb25EYXRhIHRoZSB0cmFuc2FjdGlvbiBkYXRhIHRvIHNpZ25cbiAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciB0aGUgc2lnbmVyJ3Mga2V5cGFpclxuICogQHJldHVybnMge3N0cmluZ30gdGhlIHRyYW5zYWN0aW9uIHNpZ25lZCBhbmQgZW5jb2RlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnbih0cmFuc2FjdGlvbkRhdGE6IFR4RGF0YSwga2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBzaWduSW50ZXJuYWwodHJhbnNhY3Rpb25EYXRhLCBrZXlQYWlyLCBnZXRDb21tb24oY29pbnMuZ2V0KCd0ZXRoJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb250cmFjdCBtZXRob2QgZW5jb2RlZCBkYXRhXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvIGRlc3RpbmF0aW9uIGFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBBbW91bnQgdG8gdHJhbmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgYWRpdGlvbmFsIG1ldGhvZCBjYWxsIGRhdGFcbiAqIEBwYXJhbSB7bnVtYmVyfSBleHBpcmVUaW1lIGV4cGlyYXRpb24gdGltZSBmb3IgdGhlIHRyYW5zYWN0aW9uIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZXF1ZW5jZUlkIHNlcXVlbmNlIGlkXG4gKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIHNpZ25hdHVyZSBvZiB0aGUgY2FsbFxuICogQHJldHVybnMge3N0cmluZ30gLS0gdGhlIGNvbnRyYWN0IG1ldGhvZCBlbmNvZGVkIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRNdWx0aVNpZ0RhdGEoXG4gIHRvOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGRhdGE6IHN0cmluZyxcbiAgZXhwaXJlVGltZTogbnVtYmVyLFxuICBzZXF1ZW5jZUlkOiBudW1iZXIsXG4gIHNpZ25hdHVyZTogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyYW1zID0gW3RvLCB2YWx1ZSwgdG9CdWZmZXIoZGF0YSksIGV4cGlyZVRpbWUsIHNlcXVlbmNlSWQsIHRvQnVmZmVyKHNpZ25hdHVyZSldO1xuICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRCgnc2VuZE11bHRpU2lnJywgc2VuZE11bHRpU2lnVHlwZXMpO1xuICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHNlbmRNdWx0aVNpZ1R5cGVzLCBwYXJhbXMpO1xuICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY29udHJhY3QgbWV0aG9kIGVuY29kZWQgZGF0YVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0byBkZXN0aW5hdGlvbiBhZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgQW1vdW50IHRvIHRyYW5mZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkNvbnRyYWN0QWRkcmVzcyB0aGUgYWRkcmVzcyBvZiB0aGUgZXJjMjAgdG9rZW4gY29udHJhY3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBleHBpcmVUaW1lIGV4cGlyYXRpb24gdGltZSBmb3IgdGhlIHRyYW5zYWN0aW9uIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZXF1ZW5jZUlkIHNlcXVlbmNlIGlkXG4gKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIHNpZ25hdHVyZSBvZiB0aGUgY2FsbFxuICogQHJldHVybnMge3N0cmluZ30gLS0gdGhlIGNvbnRyYWN0IG1ldGhvZCBlbmNvZGVkIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRNdWx0aVNpZ1Rva2VuRGF0YShcbiAgdG86IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZyxcbiAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZXhwaXJlVGltZTogbnVtYmVyLFxuICBzZXF1ZW5jZUlkOiBudW1iZXIsXG4gIHNpZ25hdHVyZTogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyYW1zID0gW3RvLCB2YWx1ZSwgdG9rZW5Db250cmFjdEFkZHJlc3MsIGV4cGlyZVRpbWUsIHNlcXVlbmNlSWQsIHRvQnVmZmVyKHNpZ25hdHVyZSldO1xuXG4gIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKCdzZW5kTXVsdGlTaWdUb2tlbicsIHNlbmRNdWx0aVNpZ1Rva2VuVHlwZXMpO1xuICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHNlbmRNdWx0aVNpZ1Rva2VuVHlwZXMsIHBhcmFtcyk7XG4gIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRhdGEgcmVxdWlyZWQgdG8gbWFrZSBhIGZsdXNoIHRva2VucyBjb250cmFjdCBjYWxsXG4gKlxuICogQHBhcmFtIGZvcndhcmRlckFkZHJlc3MgVGhlIGZvcndhcmRlciBhZGRyZXNzIHRvIGZsdXNoXG4gKiBAcGFyYW0gdG9rZW5BZGRyZXNzIFRoZSB0b2tlbiBhZGRyZXNzIHRvIGZsdXNoIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsdXNoVG9rZW5zRGF0YShmb3J3YXJkZXJBZGRyZXNzLCB0b2tlbkFkZHJlc3MpOiBzdHJpbmcge1xuICBjb25zdCBwYXJhbXMgPSBbZm9yd2FyZGVyQWRkcmVzcywgdG9rZW5BZGRyZXNzXTtcbiAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQoJ2ZsdXNoRm9yd2FyZGVyVG9rZW5zJywgZmx1c2hUb2tlbnNUeXBlcyk7XG4gIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUoZmx1c2hUb2tlbnNUeXBlcywgcGFyYW1zKTtcbiAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZGF0YSByZXF1aXJlZCB0byBtYWtlIGEgZmx1c2ggbmF0aXZlIGNvaW5zIGNvbnRyYWN0IGNhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsdXNoQ29pbnNEYXRhKCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcmFtcyA9IFtdO1xuICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRCgnZmx1c2gnLCBmbHVzaENvaW5zVHlwZXMpO1xuICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKGZsdXNoQ29pbnNUeXBlcywgcGFyYW1zKTtcbiAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNyZWF0ZSBmb3J3YXJkZXIgbWV0aG9kIGNhbGxpbmcgZGF0YVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGNyZWF0ZUZvcndhcmRlciBtZXRob2QgZW5jb2RlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uRGF0YSgpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlRm9yd2FyZGVyTWV0aG9kSWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgRXRoIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIHRoZSB0eCBoYXNoIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50IG51bWJlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihhbW91bnQpO1xuICByZXR1cm4gYmlnTnVtYmVyQW1vdW50LmlzSW50ZWdlcigpICYmIGJpZ051bWJlckFtb3VudC5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKDApO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIFRoZSB3YWxsZXQgY3JlYXRpb24gZGF0YSB0byBkZWNvZGVcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBUaGUgbGlzdCBvZiBzaWduZXIgYWRkcmVzc2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVXYWxsZXRDcmVhdGlvbkRhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoIWRhdGEuc3RhcnRzV2l0aCh3YWxsZXRJbml0aWFsaXphdGlvbkZpcnN0Qnl0ZXMpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB3YWxsZXQgYnl0ZWNvZGU6ICR7ZGF0YX1gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGFCdWZmZXIgPSBCdWZmZXIuZnJvbShkYXRhLnNsaWNlKDIpLCAnaGV4Jyk7XG5cbiAgLy8gdGhlIGxhc3QgMTYwIGJ5dGVzIGNvbnRhaW4gdGhlIHNlcmlhbGl6ZWQgYWRkcmVzcyBhcnJheVxuICBjb25zdCBzZXJpYWxpemVkU2lnbmVycyA9IGRhdGFCdWZmZXIuc2xpY2UoLTE2MCk7XG5cbiAgY29uc3QgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnMgPSBFdGhlcmV1bUFiaS5yYXdEZWNvZGUod2FsbGV0U2ltcGxlQ29uc3RydWN0b3IsIHNlcmlhbGl6ZWRTaWduZXJzKTtcbiAgaWYgKHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYENvdWxkIG5vdCBkZWNvZGUgd2FsbGV0IGNvbnN0cnVjdG9yIGJ5dGVjb2RlOiAke3Jlc3VsdEVuY29kZWRQYXJhbWV0ZXJzfWApO1xuICB9XG5cbiAgY29uc3QgYWRkcmVzc2VzOiBCTltdID0gcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnNbMF07XG4gIGlmIChhZGRyZXNzZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgaW52YWxpZCBudW1iZXIgb2YgYWRkcmVzc2VzIGluIHBhcnNlZCBjb25zdHJ1Y3RvcjogJHthZGRyZXNzZXN9YCk7XG4gIH1cblxuICAvLyBzb21ldGltZXMgZXRoZXJldW1qcy1hYmkgcmVtb3ZlcyAwIHBhZGRpbmcgYXQgdGhlIHN0YXJ0IG9mIGFkZHJlc3NlcyxcbiAgLy8gc28gd2Ugc2hvdWxkIHBhZCB1bnRpbCB0aGV5IGFyZSB0aGUgc3RhbmRhcmQgMjAgYnl0ZXNcbiAgY29uc3QgcGFkZGVkQWRkcmVzc2VzID0gYWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT4gc3RyaXBIZXhQcmVmaXgoYWRkcmVzcy50b1N0cmluZygnaGV4JykpLnBhZFN0YXJ0KDQwLCAnMCcpKTtcblxuICByZXR1cm4gcGFkZGVkQWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT4gYWRkSGV4UHJlZml4KGFkZHJlc3MpKTtcbn1cblxuLyoqXG4gKiBEZWNvZGUgdGhlIGdpdmVuIEFCSS1lbmNvZGVkIHRyYW5zZmVyIGRhdGEgYW5kIHJldHVybiBwYXJzZWQgZmllbGRzXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gZGVjb2RlXG4gKiBAcmV0dXJucyBwYXJzZWQgdHJhbnNmZXIgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IFRyYW5zZmVyRGF0YSB7XG4gIGlmIChkYXRhLnN0YXJ0c1dpdGgoc2VuZE11bHRpc2lnTWV0aG9kSWQpKSB7XG4gICAgcmV0dXJuIGRlY29kZU5hdGl2ZVRyYW5zZmVyRGF0YShkYXRhKTtcbiAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoc2VuZE11bHRpc2lnVG9rZW5NZXRob2RJZCkpIHtcbiAgICByZXR1cm4gZGVjb2RlVG9rZW5UcmFuc2ZlckRhdGEoZGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG59XG5cbi8qKlxuICogRGVjb2RlIHRoZSBnaXZlbiBBQkktZW5jb2RlZCB0cmFuc2ZlciBkYXRhIGZvciB0aGUgc2VuZE11bHRpc2lnVG9rZW4gZnVuY3Rpb24gYW5kIHJldHVybiBwYXJzZWQgZmllbGRzXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gZGVjb2RlXG4gKiBAcmV0dXJucyBwYXJzZWQgdG9rZW4gdHJhbnNmZXIgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVG9rZW5UcmFuc2ZlckRhdGEoZGF0YTogc3RyaW5nKTogVG9rZW5UcmFuc2ZlckRhdGEge1xuICBpZiAoIWRhdGEuc3RhcnRzV2l0aChzZW5kTXVsdGlzaWdUb2tlbk1ldGhvZElkKSkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdHJhbnNmZXIgYnl0ZWNvZGU6ICR7ZGF0YX1gKTtcbiAgfVxuXG4gIGNvbnN0IFt0bywgYW1vdW50LCB0b2tlbkNvbnRyYWN0QWRkcmVzcywgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgc2lnbmF0dXJlXSA9IGdldFJhd0RlY29kZWQoXG4gICAgc2VuZE11bHRpU2lnVG9rZW5UeXBlcyxcbiAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKHNlbmRNdWx0aXNpZ1Rva2VuTWV0aG9kSWQsIGRhdGEpLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdG86IGFkZEhleFByZWZpeCh0byksXG4gICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KGFtb3VudCkpLnRvRml4ZWQoKSxcbiAgICBleHBpcmVUaW1lOiBidWZmZXJUb0ludChleHBpcmVUaW1lKSxcbiAgICBzZXF1ZW5jZUlkOiBidWZmZXJUb0ludChzZXF1ZW5jZUlkKSxcbiAgICBzaWduYXR1cmU6IGJ1ZmZlclRvSGV4KHNpZ25hdHVyZSksXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFkZEhleFByZWZpeCh0b2tlbkNvbnRyYWN0QWRkcmVzcyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVFUkM3MjFUcmFuc2ZlckRhdGEoZGF0YTogc3RyaW5nKTogRVJDNzIxVHJhbnNmZXJEYXRhIHtcbiAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoc2VuZE11bHRpc2lnTWV0aG9kSWQpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG5cbiAgY29uc3QgW3RvLCBhbW91bnQsIGludGVybmFsRGF0YSwgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgc2lnbmF0dXJlXSA9IGdldFJhd0RlY29kZWQoXG4gICAgc2VuZE11bHRpU2lnVHlwZXMsXG4gICAgZ2V0QnVmZmVyZWRCeXRlQ29kZShzZW5kTXVsdGlzaWdNZXRob2RJZCwgZGF0YSksXG4gICk7XG5cbiAgY29uc3QgaW50ZXJuYWxEYXRhSGV4ID0gYnVmZmVyVG9IZXgoaW50ZXJuYWxEYXRhKTtcbiAgaWYgKCFpbnRlcm5hbERhdGFIZXguc3RhcnRzV2l0aChFUkM3MjFTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG5cbiAgY29uc3QgW2Zyb20sIHJlY2VpdmVyLCB0b2tlbklkLCB1c2VyU2VudERhdGFdID0gZ2V0UmF3RGVjb2RlZChcbiAgICBFUkM3MjFTYWZlVHJhbnNmZXJUeXBlcyxcbiAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKEVSQzcyMVNhZmVUcmFuc2ZlclR5cGVNZXRob2RJZCwgaW50ZXJuYWxEYXRhSGV4KSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHRvOiBhZGRIZXhQcmVmaXgocmVjZWl2ZXIpLFxuICAgIGZyb206IGFkZEhleFByZWZpeChmcm9tKSxcbiAgICBleHBpcmVUaW1lOiBidWZmZXJUb0ludChleHBpcmVUaW1lKSxcbiAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgoYW1vdW50KSkudG9GaXhlZCgpLFxuICAgIHRva2VuSWQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodG9rZW5JZCkpLnRvRml4ZWQoKSxcbiAgICBzZXF1ZW5jZUlkOiBidWZmZXJUb0ludChzZXF1ZW5jZUlkKSxcbiAgICBzaWduYXR1cmU6IGJ1ZmZlclRvSGV4KHNpZ25hdHVyZSksXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGFkZEhleFByZWZpeCh0byksXG4gICAgdXNlckRhdGE6IGJ1ZmZlclRvSGV4KHVzZXJTZW50RGF0YSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVFUkMxMTU1VHJhbnNmZXJEYXRhKGRhdGE6IHN0cmluZyk6IEVSQzExNTVUcmFuc2ZlckRhdGEge1xuICBsZXQgZnJvbSwgcmVjZWl2ZXIsIHVzZXJTZW50RGF0YTtcbiAgbGV0IHRva2VuSWRzOiBzdHJpbmdbXTtcbiAgbGV0IHZhbHVlczogc3RyaW5nW107XG5cbiAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoc2VuZE11bHRpc2lnTWV0aG9kSWQpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG5cbiAgY29uc3QgW3RvLCBhbW91bnQsIGludGVybmFsRGF0YSwgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgc2lnbmF0dXJlXSA9IGdldFJhd0RlY29kZWQoXG4gICAgc2VuZE11bHRpU2lnVHlwZXMsXG4gICAgZ2V0QnVmZmVyZWRCeXRlQ29kZShzZW5kTXVsdGlzaWdNZXRob2RJZCwgZGF0YSksXG4gICk7XG5cbiAgY29uc3QgaW50ZXJuYWxEYXRhSGV4ID0gYnVmZmVyVG9IZXgoaW50ZXJuYWxEYXRhKTtcbiAgaWYgKGludGVybmFsRGF0YUhleC5zdGFydHNXaXRoKEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQpKSB7XG4gICAgbGV0IHRva2VuSWQ7XG4gICAgbGV0IHZhbHVlO1xuXG4gICAgW2Zyb20sIHJlY2VpdmVyLCB0b2tlbklkLCB2YWx1ZSwgdXNlclNlbnREYXRhXSA9IGdldFJhd0RlY29kZWQoXG4gICAgICBFUkMxMTU1U2FmZVRyYW5zZmVyVHlwZXMsXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKEVSQzExNTVTYWZlVHJhbnNmZXJUeXBlTWV0aG9kSWQsIGludGVybmFsRGF0YUhleCksXG4gICAgKTtcblxuICAgIHRva2VuSWRzID0gW25ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodG9rZW5JZCkpLnRvRml4ZWQoKV07XG4gICAgdmFsdWVzID0gW25ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodmFsdWUpKS50b0ZpeGVkKCldO1xuICB9IGVsc2UgaWYgKGJ1ZmZlclRvSGV4KGludGVybmFsRGF0YSkuc3RhcnRzV2l0aChFUkMxMTU1QmF0Y2hUcmFuc2ZlclR5cGVNZXRob2RJZCkpIHtcbiAgICBsZXQgdGVtcFRva2VuSWRzLCB0ZW1wVmFsdWVzO1xuICAgIFtmcm9tLCByZWNlaXZlciwgdGVtcFRva2VuSWRzLCB0ZW1wVmFsdWVzLCB1c2VyU2VudERhdGFdID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZXMsXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKEVSQzExNTVCYXRjaFRyYW5zZmVyVHlwZU1ldGhvZElkLCBpbnRlcm5hbERhdGFIZXgpLFxuICAgICk7XG4gICAgdG9rZW5JZHMgPSB0ZW1wVG9rZW5JZHMubWFwKCh4KSA9PiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHgpKS50b0ZpeGVkKCkpO1xuICAgIHZhbHVlcyA9IHRlbXBWYWx1ZXMubWFwKCh4KSA9PiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHgpKS50b0ZpeGVkKCkpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdHJhbnNmZXIgYnl0ZWNvZGU6ICR7ZGF0YX1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG86IGFkZEhleFByZWZpeChyZWNlaXZlciksXG4gICAgZnJvbTogYWRkSGV4UHJlZml4KGZyb20pLFxuICAgIGV4cGlyZVRpbWU6IGJ1ZmZlclRvSW50KGV4cGlyZVRpbWUpLFxuICAgIGFtb3VudDogbmV3IEJpZ051bWJlcihidWZmZXJUb0hleChhbW91bnQpKS50b0ZpeGVkKCksXG4gICAgdG9rZW5JZHMsXG4gICAgdmFsdWVzLFxuICAgIHNlcXVlbmNlSWQ6IGJ1ZmZlclRvSW50KHNlcXVlbmNlSWQpLFxuICAgIHNpZ25hdHVyZTogYnVmZmVyVG9IZXgoc2lnbmF0dXJlKSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogYWRkSGV4UHJlZml4KHRvKSxcbiAgICB1c2VyRGF0YTogdXNlclNlbnREYXRhLFxuICB9O1xufVxuXG4vKipcbiAqIERlY29kZSB0aGUgZ2l2ZW4gQUJJLWVuY29kZWQgdHJhbnNmZXIgZGF0YSBmb3IgdGhlIHNlbmRNdWx0aXNpZyBmdW5jdGlvbiBhbmQgcmV0dXJuIHBhcnNlZCBmaWVsZHNcbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBkZWNvZGVcbiAqIEByZXR1cm5zIHBhcnNlZCB0cmFuc2ZlciBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVOYXRpdmVUcmFuc2ZlckRhdGEoZGF0YTogc3RyaW5nKTogTmF0aXZlVHJhbnNmZXJEYXRhIHtcbiAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoc2VuZE11bHRpc2lnTWV0aG9kSWQpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG5cbiAgY29uc3QgW3RvLCBhbW91bnQsIGludGVybmFsRGF0YSwgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgc2lnbmF0dXJlXSA9IGdldFJhd0RlY29kZWQoXG4gICAgc2VuZE11bHRpU2lnVHlwZXMsXG4gICAgZ2V0QnVmZmVyZWRCeXRlQ29kZShzZW5kTXVsdGlzaWdNZXRob2RJZCwgZGF0YSksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICB0bzogYWRkSGV4UHJlZml4KHRvKSxcbiAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgoYW1vdW50KSkudG9GaXhlZCgpLFxuICAgIGV4cGlyZVRpbWU6IGJ1ZmZlclRvSW50KGV4cGlyZVRpbWUpLFxuICAgIHNlcXVlbmNlSWQ6IGJ1ZmZlclRvSW50KHNlcXVlbmNlSWQpLFxuICAgIHNpZ25hdHVyZTogYnVmZmVyVG9IZXgoc2lnbmF0dXJlKSxcbiAgICBkYXRhOiBidWZmZXJUb0hleChpbnRlcm5hbERhdGEpLFxuICB9O1xufVxuXG4vKipcbiAqIERlY29kZSB0aGUgZ2l2ZW4gQUJJLWVuY29kZWQgZmx1c2ggdG9rZW5zIGRhdGEgYW5kIHJldHVybiBwYXJzZWQgZmllbGRzXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gZGVjb2RlXG4gKiBAcmV0dXJucyBwYXJzZWQgdHJhbnNmZXIgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRmx1c2hUb2tlbnNEYXRhKGRhdGE6IHN0cmluZyk6IEZsdXNoVG9rZW5zRGF0YSB7XG4gIGlmICghZGF0YS5zdGFydHNXaXRoKGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2ZlciBieXRlY29kZTogJHtkYXRhfWApO1xuICB9XG5cbiAgY29uc3QgW2ZvcndhcmRlckFkZHJlc3MsIHRva2VuQWRkcmVzc10gPSBnZXRSYXdEZWNvZGVkKFxuICAgIGZsdXNoVG9rZW5zVHlwZXMsXG4gICAgZ2V0QnVmZmVyZWRCeXRlQ29kZShmbHVzaEZvcndhcmRlclRva2Vuc01ldGhvZElkLCBkYXRhKSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZvcndhcmRlckFkZHJlc3M6IGFkZEhleFByZWZpeChmb3J3YXJkZXJBZGRyZXNzKSxcbiAgICB0b2tlbkFkZHJlc3M6IGFkZEhleFByZWZpeCh0b2tlbkFkZHJlc3MpLFxuICB9O1xufVxuXG4vKipcbiAqIENsYXNzaWZ5IHRoZSBnaXZlbiB0cmFuc2FjdGlvbiBkYXRhIGJhc2VkIGFzIGEgdHJhbnNhY3Rpb24gdHlwZS5cbiAqIEVUSCB0cmFuc2FjdGlvbnMgYXJlIGRlZmluZWQgYnkgdGhlIGZpcnN0IDggYnl0ZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGRhdGEsIGFsc28ga25vd24gYXMgdGhlIG1ldGhvZCBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGNsYXNzaWZ5IHRoZSB0cmFuc2FjdGlvbiB3aXRoXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgY2xhc3NpZmllZCB0cmFuc2FjdGlvbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVRyYW5zYWN0aW9uKGRhdGE6IHN0cmluZyk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gIGlmIChkYXRhLmxlbmd0aCA8IDEwKSB7XG4gICAgLy8gY29udHJhY3QgY2FsbHMgbXVzdCBoYXZlIGF0IGxlYXN0IDQgYnl0ZXMgKG1ldGhvZCBpZCkgYW5kICcweCdcbiAgICAvLyBpZiBpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGRhdGEgdG8gYmUgYSBjb250cmFjdCBjYWxsIGl0IG11c3QgYmUgYSBzaW5nbGUgc2lnIHNlbmRcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQ7XG4gIH1cblxuICAvLyBUT0RPKFNUTFgtMTk3MCk6IHZhbGlkYXRlIGlmIHdlIGFyZSBnb2luZyB0byBjb25zdHJhaW50IHRvIHNvbWUgbWV0aG9kcyBhbGxvd2VkXG4gIGxldCB0cmFuc2FjdGlvblR5cGUgPSB0cmFuc2FjdGlvblR5cGVzTWFwW2RhdGEuc2xpY2UoMCwgMTApLnRvTG93ZXJDYXNlKCldO1xuICBpZiAodHJhbnNhY3Rpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICB0cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uVHlwZTtcbn1cblxuLyoqXG4gKiBBIHRyYW5zYWN0aW9uIHR5cGVzIG1hcCBhY2NvcmRpbmcgdG8gdGhlIHN0YXJ0aW5nIHBhcnQgb2YgdGhlIGVuY29kZWQgZGF0YVxuICovXG5jb25zdCB0cmFuc2FjdGlvblR5cGVzTWFwID0ge1xuICBbd2FsbGV0SW5pdGlhbGl6YXRpb25GaXJzdEJ5dGVzXTogVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uLFxuICBbY3JlYXRlRm9yd2FyZGVyTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uLFxuICBbc2VuZE11bHRpc2lnTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuU2VuZCxcbiAgW2ZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMsXG4gIFtmbHVzaENvaW5zTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuRmx1c2hDb2lucyxcbiAgW3NlbmRNdWx0aXNpZ1Rva2VuTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuU2VuZCxcbiAgW0xvY2tNZXRob2RJZF06IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jayxcbiAgW1ZvdGVNZXRob2RJZF06IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZSxcbiAgW0FjdGl2YXRlTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlLFxuICBbVW52b3RlTWV0aG9kSWRdOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1Vudm90ZSxcbiAgW1VubG9ja01ldGhvZElkXTogVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2ssXG4gIFtXaXRoZHJhd01ldGhvZElkXTogVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdyxcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0gbnVtYmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBoZXggbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJUb0hleFN0cmluZyhudW06IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGhleCA9IG51bS50b1N0cmluZygxNik7XG4gIHJldHVybiBoZXgubGVuZ3RoICUgMiA9PT0gMCA/ICcweCcgKyBoZXggOiAnMHgwJyArIGhleDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhleCBUaGUgaGV4IHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSByZXN1bHRpbmcgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZXhTdHJpbmdUb051bWJlcihoZXg6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChoZXguc2xpY2UoMiksIDE2KTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYW4gYWRkcmVzcyBvZiB0aGUgZm9yd2FyZGVyIGFkZHJlc3MgdG8gYmUgZGVwbG95ZWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udHJhY3RBZGRyZXNzIHRoZSBhZGRyZXNzIHdoaWNoIGlzIGNyZWF0aW5nIHRoaXMgbmV3IGFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb250cmFjdENvdW50ZXIgdGhlIG5vbmNlIG9mIHRoZSBjb250cmFjdCBhZGRyZXNzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgY2FsY3VsYXRlZCBmb3J3YXJkZXIgY29udHJhY3QgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRm9yd2FyZGVyQWRkcmVzcyhjb250cmFjdEFkZHJlc3M6IHN0cmluZywgY29udHJhY3RDb3VudGVyOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBmb3J3YXJkZXJBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKGNvbnRyYWN0QWRkcmVzcywgY29udHJhY3RDb3VudGVyKTtcbiAgcmV0dXJuIGFkZEhleFByZWZpeChmb3J3YXJkZXJBZGRyZXNzLnRvU3RyaW5nKCdoZXgnKSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBmb3J3YXJkZXIgdjEgYWRkcmVzcyB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGlmIGBjcmVhdG9yQWRkcmVzc2AgY3JlYXRlcyBpdCB3aXRoIHNhbHQgYHNhbHRgXG4gKiBhbmQgaW5pdGNvZGUgYGluaWNvZGUgdXNpbmcgdGhlIGNyZWF0ZTIgb3Bjb2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gY3JlYXRvckFkZHJlc3MgVGhlIGFkZHJlc3MgdGhhdCBpcyBzZW5kaW5nIHRoZSB0eCB0byBjcmVhdGUgYSBuZXcgYWRkcmVzcywgaGV4IHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHNhbHQgVGhlIHNhbHQgdG8gY3JlYXRlIHRoZSBhZGRyZXNzIHdpdGggdXNpbmcgY3JlYXRlMiwgaGV4IHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGluaXRjb2RlIFRoZSBpbml0Y29kZSB0aGF0IHdpbGwgYmUgZGVwbG95ZWQgdG8gdGhlIGFkZHJlc3MsIGhleCBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNhbGN1bGF0ZWQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRm9yd2FyZGVyVjFBZGRyZXNzKGNyZWF0b3JBZGRyZXNzOiBzdHJpbmcsIHNhbHQ6IHN0cmluZywgaW5pdGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGZvcndhcmRlclYxQWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzczIoXG4gICAgQnVmZmVyLmZyb20oc3RyaXBIZXhQcmVmaXgoY3JlYXRvckFkZHJlc3MpLCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oc3RyaXBIZXhQcmVmaXgoc2FsdCksICdoZXgnKSxcbiAgICBCdWZmZXIuZnJvbShzdHJpcEhleFByZWZpeChpbml0Y29kZSksICdoZXgnKSxcbiAgKTtcbiAgcmV0dXJuIGFkZEhleFByZWZpeChmb3J3YXJkZXJWMUFkZHJlc3MudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuLyoqXG4gKiBUYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBhZGRyZXNzIGZvciB0aGUgcHJveHkgY29udHJhY3QsIGFuZCBnZXQgdGhlIGJpbmFyeSBpbml0Y29kZSBmb3IgdGhlIGFzc29jaWF0ZWQgcHJveHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbXBsZW1lbnRhdGlvbkFkZHJlc3MgVGhlIGFkZHJlc3Mgb2YgdGhlIGltcGxlbWVudGF0aW9uIGNvbnRyYWN0IGZvciB0aGUgcHJveHlcbiAqIEByZXR1cm4ge3N0cmluZ30gQmluYXJ5IGhleCBzdHJpbmcgb2YgdGhlIHByb3h5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm94eUluaXRjb2RlKGltcGxlbWVudGF0aW9uQWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdGFyZ2V0ID0gc3RyaXBIZXhQcmVmaXgoaW1wbGVtZW50YXRpb25BZGRyZXNzLnRvTG93ZXJDYXNlKCkpLnBhZFN0YXJ0KDQwLCAnMCcpO1xuXG4gIC8vIGJ5dGVjb2RlIG9mIHRoZSBwcm94eSwgZnJvbTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL2V0aC1tdWx0aXNpZy12NC9ibG9iL2Q1NDZhOTM3ZjkwZjkzZTgzYjM0MjNhNWJmOTMzZDFkNzdjNjc3YzMvY29udHJhY3RzL0Nsb25lRmFjdG9yeS5zb2wjTDQyLUw1NlxuICByZXR1cm4gYDB4M2Q2MDJkODA2MDBhM2QzOTgxZjMzNjNkM2QzNzNkM2QzZDM2M2Q3MyR7dGFyZ2V0fTVhZjQzZDgyODAzZTkwM2Q5MTYwMmI1N2ZkNWJmM2A7XG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gc2lnbmF0dXJlIHBhcnRzIHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gKlxuICogQHBhcmFtIHtTaWduYXR1cmVQYXJ0c30gc2lnIFRoZSBzaWduYXR1cmUgdG8gY29udmVydCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZ1NpZyhzaWc6IFNpZ25hdHVyZVBhcnRzKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJ1ZmZlclRvSGV4KEJ1ZmZlci5jb25jYXQoW3NldExlbmd0aExlZnQoc2lnLnIsIDMyKSwgc2V0TGVuZ3RoTGVmdChzaWcucywgMzIpLCB0b0J1ZmZlcihzaWcudildKSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB0eCBkYXRhIGhhcyBhIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSB7VHhEYXRhfSB0eERhdGEgVGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gY2hlY2sgZm9yIHNpZ25hdHVyZVxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHR4IGhhcyBhIHNpZ25hdHVyZSwgZWxzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU2lnbmF0dXJlKHR4RGF0YTogVHhEYXRhKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdHhEYXRhLnYgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR4RGF0YS5yICE9PSB1bmRlZmluZWQgJiZcbiAgICB0eERhdGEucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgdHhEYXRhLnYubGVuZ3RoID4gMCAmJlxuICAgIHR4RGF0YS5yLmxlbmd0aCA+IDAgJiZcbiAgICB0eERhdGEucy5sZW5ndGggPiAwXG4gICk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByYXcgZGF0YSBkZWNvZGVkIGZvciBzb21lIHR5cGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gdHlwZXMgQUJJIHR5cGVzIGRlZmluaXRpb25cbiAqIEBwYXJhbSB7QnVmZmVyfSBzZXJpYWxpemVkQXJncyBlbmNvZGVkIGFyZ3NcbiAqIEByZXR1cm5zIHtCdWZmZXJbXX0gdGhlIGRlY29kZWQgcmF3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYXdEZWNvZGVkKHR5cGVzOiBzdHJpbmdbXSwgc2VyaWFsaXplZEFyZ3M6IEJ1ZmZlcik6IEJ1ZmZlcltdIHtcbiAgcmV0dXJuIEV0aGVyZXVtQWJpLnJhd0RlY29kZSh0eXBlcywgc2VyaWFsaXplZEFyZ3MpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYnVmZmVyZWQgYnl0ZWNvZGUgZnJvbSByYXdEYXRhIHVzaW5nIGEgbWV0aG9kSWQgYXMgZGVsaW1pdGVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZElkIHRoZSBoZXggZW5jb2RlZCBtZXRob2QgSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdEYXRhIHRoZSBoZXggZW5jb2RlZCByYXcgZGF0YVxuICogQHJldHVybnMge0J1ZmZlcn0gZGF0YSBidWZmZXJlZCBieXRlY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVmZmVyZWRCeXRlQ29kZShtZXRob2RJZDogc3RyaW5nLCByYXdEYXRhOiBzdHJpbmcpOiBCdWZmZXIge1xuICBjb25zdCBzcGxpdEJ5dGVjb2RlID0gcmF3RGF0YS5zcGxpdChtZXRob2RJZCk7XG4gIGlmIChzcGxpdEJ5dGVjb2RlLmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc2VuZCBieXRlY29kZTogJHtyYXdEYXRhfWApO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShzcGxpdEJ5dGVjb2RlWzFdLCAnaGV4Jyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzdGF0aWNzIGNvaW4gb2JqZWN0IG1hdGNoaW5nIGEgZ2l2ZW4gY29udHJhY3QgYWRkcmVzcyBpZiBpdCBleGlzdHNcbiAqXG4gKiBAcGFyYW0gdG9rZW5Db250cmFjdEFkZHJlc3MgVGhlIGNvbnRyYWN0IGFkZHJlc3MgdG8gbWF0Y2ggYWdhaW5zdFxuICogQHJldHVybnMgc3RhdGljcyBCYXNlQ29pbiBvYmplY3QgZm9yIHRoZSBtYXRjaGluZyB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW4odG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZywgbmV0d29yazogQmFzZU5ldHdvcmspOiBSZWFkb25seTxCYXNlQ29pbj4gfCB1bmRlZmluZWQge1xuICBjb25zdCB0b2tlbnMgPSBjb2lucy5maWx0ZXIoKGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29pbi5uZXR3b3JrLnR5cGUgPT09IG5ldHdvcmsudHlwZSAmJiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b0xvd2VyQ2FzZSgpID09PSB0b2tlbkNvbnRyYWN0QWRkcmVzcy50b0xvd2VyQ2FzZSgpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuXG4gIC8vIGlmIGxlbmd0aCBvZiB0b2tlbnMgaXMgMSwgcmV0dXJuIHRoZSBmaXJzdCwgZWxzZSByZXR1cm4gdW5kZWZpbmVkXG4gIC8vIENhbid0IGRpcmVjdGx5IGluZGV4IGludG8gdG9rZW5zLCBvciBjYWxsIGBsZW5ndGhgLCBzbyB3ZSB1c2UgbWFwIHRvIGdldCBhbiBhcnJheVxuICBjb25zdCB0b2tlbnNBcnJheSA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB0b2tlbik7XG4gIGlmICh0b2tlbnNBcnJheS5sZW5ndGggPj0gMSkge1xuICAgIC8vIHRoZXJlIHNob3VsZCBuZXZlciBiZSB0d28gdG9rZW5zIHdpdGggdGhlIHNhbWUgY29udHJhY3QgYWRkcmVzcywgc28gd2UgYXNzZXJ0IHRoYXQgaGVyZVxuICAgIGFzc2VydCh0b2tlbnNBcnJheS5sZW5ndGggPT09IDEpO1xuICAgIHJldHVybiB0b2tlbnNBcnJheVswXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -1,19 +0,0 @@
1
- export declare const sendMultisigMethodId = "0x39125215";
2
- export declare const sendMultisigTokenMethodId = "0x0dcd7a6c";
3
- export declare const createForwarderMethodId = "0xa68a76cc";
4
- export declare const walletInitializationFirstBytes = "0x60606040";
5
- export declare const flushForwarderTokensMethodId = "0x2da03409";
6
- export declare const flushCoinsMethodId = "0x6b9f96ea";
7
- export declare const ERC721SafeTransferTypeMethodId = "0xb88d4fde";
8
- export declare const ERC1155SafeTransferTypeMethodId = "0xf242432a";
9
- export declare const ERC1155BatchTransferTypeMethodId = "0x2eb2c2d6";
10
- export declare const walletSimpleByteCode = "0x60606040526000600160006101000a81548160ff021916908315150217905550341561002a57600080fd5b60405161155b38038061155b833981016040528080518201919050506003815114151561005657600080fd5b806000908051906020019061006c929190610073565b5050610140565b8280548282559060005260206000209081019282156100ec579160200282015b828111156100eb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610093565b5b5090506100f991906100fd565b5090565b61013d91905b8082111561013957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610103565b5090565b90565b61140c8061014f6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101e95780632da034091461024c57806339125215146102a45780637df73e271461037e578063a0b7967b146103cf578063a68a76cc146103f8578063abe3219c1461044d578063fc0f392d1461047a575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561013e57600080fd5b6101e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061048f565b005b34156101f457600080fd5b61020a6004808035906020019091905050610668565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025757600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a7565b005b34156102af57600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610773565b005b341561038957600080fd5b6103b5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a72565b604051808215151515815260200191505060405180910390f35b34156103da57600080fd5b6103e2610b16565b6040518082815260200191505060405180910390f35b341561040357600080fd5b61040b610b70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045857600080fd5b610460610b95565b604051808215151515815260200191505060405180910390f35b341561048557600080fd5b61048d610ba8565b005b60008061049b33610a72565b15156104a657600080fd5b878787878760405180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200195505050505050604051809103902091506105898883858888610c3b565b508590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561063857600080fd5b6102c65a03f1151561064957600080fd5b50505060405180519050151561065e57600080fd5b5050505050505050565b60008181548110151561067757fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b233610a72565b15156106bd57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561075a57600080fd5b6102c65a03f1151561076b57600080fd5b505050505050565b60008061077f33610a72565b151561078a57600080fd5b878787878760405180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610833578051825260208201915060208101905060208303925061080e565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040518091039020915061087f8883858888610c3b565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b838110156108c75780820151818401526020810190506108ac565b50505050905090810190601f1680156108f45780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561091857600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a29578082015181840152602081019050610a0e565b50505050905090810190601f168015610a565780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610b0b578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610aad57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610afe5760019150610b10565b8080600101915050610a7a565b600091505b50919050565b6000806000809150600090505b600a811015610b655781600282600a81101515610b3c57fe5b01541115610b5857600281600a81101515610b5357fe5b015491505b8080600101915050610b23565b600182019250505090565b6000610b7a610e90565b604051809103906000f0801515610b9057600080fd5b905090565b600160009054906101000a900460ff1681565b610bb133610a72565b1515610bbc57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610c488686610ce6565b9050600160009054906101000a900460ff168015610c6c5750610c6a87610a72565b155b15610c7657600080fd5b42841015610c8357600080fd5b610c8c83610db9565b610c9581610a72565b1515610ca057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cd957600080fd5b8091505095945050505050565b60008060008060418551141515610cfc57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610d2757601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610da557600080fd5b505060206040510351935050505092915050565b600080610dc533610a72565b1515610dd057600080fd5b60009150600090505b600a811015610e385782600282600a81101515610df257fe5b01541415610dff57600080fd5b600282600a81101515610e0e57fe5b0154600282600a81101515610e1f57fe5b01541015610e2b578091505b8080600101915050610dd9565b600282600a81101515610e4757fe5b0154831015610e5557600080fd5b612710600283600a81101515610e6757fe5b015401831115610e7657600080fd5b82600283600a81101515610e8657fe5b0181905550505050565b60405161054080610ea18339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104e28061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101475780633ef133671461019c5780636b9f96ea146101d5575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156100b757600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561015257600080fd5b61015a6101ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101a757600080fd5b6101d3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061020f565b005b34156101e057600080fd5b6101e861043c565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561026f57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561031857600080fd5b6102c65a03f1151561032957600080fd5b505050604051805190509050600081141561034357610436565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561040f57600080fd5b6102c65a03f1151561042057600080fd5b50505060405180519050151561043557600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156104b457600080fd5b5600a165627a7a72305820088cce905e424bfe474510efe41761893e9e34b54b885b8fee546d8be88aee3c0029a165627a7a72305820827adc3ef3a179757bc33003e41070fbbfcdfc5db31275af3cb0395155cd3bbb0029";
11
- export declare const walletSimpleConstructor: string[];
12
- export declare const flushTokensTypes: string[];
13
- export declare const flushCoinsTypes: never[];
14
- export declare const sendMultiSigTypes: string[];
15
- export declare const sendMultiSigTokenTypes: string[];
16
- export declare const ERC721SafeTransferTypes: string[];
17
- export declare const ERC1155SafeTransferTypes: string[];
18
- export declare const ERC1155BatchTransferTypes: string[];
19
- //# sourceMappingURL=walletUtil.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walletUtil.d.ts","sourceRoot":"","sources":["../../../../src/coin/eth/walletUtil.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,uBAAuB,eAAe,CAAC;AACpD,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAC5D,eAAO,MAAM,gCAAgC,eAAe,CAAC;AAS7D,eAAO,MAAM,oBAAoB,6rVAC2pV,CAAC;AAE7rV,eAAO,MAAM,uBAAuB,UAAgB,CAAC;AACrD,eAAO,MAAM,gBAAgB,UAAyB,CAAC;AACvD,eAAO,MAAM,eAAe,SAAK,CAAC;AAElC,eAAO,MAAM,iBAAiB,UAAwD,CAAC;AAEvF,eAAO,MAAM,sBAAsB,UAA0D,CAAC;AAE9F,eAAO,MAAM,uBAAuB,UAA6C,CAAC;AAElF,eAAO,MAAM,wBAAwB,UAAwD,CAAC;AAC9F,eAAO,MAAM,yBAAyB,UAA4D,CAAC"}