phantasma-sdk-ts 0.1.71

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 (478) hide show
  1. package/.eslintignore +13 -0
  2. package/.eslintrc.cjs +15 -0
  3. package/.github/workflows/npm-publish.yml +47 -0
  4. package/.prettierignore +13 -0
  5. package/.prettierrc +8 -0
  6. package/LICENSE +201 -0
  7. package/README.md +842 -0
  8. package/babel.config.js +6 -0
  9. package/core/index.d.ts +10 -0
  10. package/core/index.d.ts.map +1 -0
  11. package/core/index.js +25 -0
  12. package/core/interfaces/IContract.d.ts +27 -0
  13. package/core/interfaces/IContract.d.ts.map +1 -0
  14. package/core/interfaces/IContract.js +25 -0
  15. package/core/interfaces/IKeyPair.d.ts +7 -0
  16. package/core/interfaces/IKeyPair.d.ts.map +1 -0
  17. package/core/interfaces/IKeyPair.js +2 -0
  18. package/core/interfaces/ISerializable.d.ts +6 -0
  19. package/core/interfaces/ISerializable.d.ts.map +1 -0
  20. package/core/interfaces/ISerializable.js +9 -0
  21. package/core/interfaces/IStack.d.ts +7 -0
  22. package/core/interfaces/IStack.d.ts.map +1 -0
  23. package/core/interfaces/IStack.js +2 -0
  24. package/core/interfaces/IToken.d.ts +29 -0
  25. package/core/interfaces/IToken.d.ts.map +1 -0
  26. package/core/interfaces/IToken.js +22 -0
  27. package/core/interfaces/Signature.d.ts +21 -0
  28. package/core/interfaces/Signature.d.ts.map +1 -0
  29. package/core/interfaces/Signature.js +31 -0
  30. package/core/interfaces/index.d.ts +7 -0
  31. package/core/interfaces/index.d.ts.map +1 -0
  32. package/core/interfaces/index.js +22 -0
  33. package/core/ledger/Address-Transcode.d.ts +20 -0
  34. package/core/ledger/Address-Transcode.d.ts.map +1 -0
  35. package/core/ledger/Address-Transcode.js +70 -0
  36. package/core/ledger/Ledger-Commands.d.ts +76 -0
  37. package/core/ledger/Ledger-Commands.d.ts.map +1 -0
  38. package/core/ledger/Ledger-Commands.js +530 -0
  39. package/core/ledger/Ledger-Utils.d.ts +74 -0
  40. package/core/ledger/Ledger-Utils.d.ts.map +1 -0
  41. package/core/ledger/Ledger-Utils.js +609 -0
  42. package/core/ledger/LedgerConfig.d.ts +17 -0
  43. package/core/ledger/LedgerConfig.d.ts.map +1 -0
  44. package/core/ledger/LedgerConfig.js +2 -0
  45. package/core/ledger/Mnemonic.d.ts +35 -0
  46. package/core/ledger/Mnemonic.d.ts.map +1 -0
  47. package/core/ledger/Mnemonic.js +65 -0
  48. package/core/ledger/Transaction-Sign.d.ts +10 -0
  49. package/core/ledger/Transaction-Sign.d.ts.map +1 -0
  50. package/core/ledger/Transaction-Sign.js +149 -0
  51. package/core/ledger/Transaction-Transcode.d.ts +24 -0
  52. package/core/ledger/Transaction-Transcode.d.ts.map +1 -0
  53. package/core/ledger/Transaction-Transcode.js +47 -0
  54. package/core/ledger/index.d.ts +9 -0
  55. package/core/ledger/index.d.ts.map +1 -0
  56. package/core/ledger/index.js +24 -0
  57. package/core/ledger/interfaces/ApplicationNameResponse.d.ts +6 -0
  58. package/core/ledger/interfaces/ApplicationNameResponse.d.ts.map +1 -0
  59. package/core/ledger/interfaces/ApplicationNameResponse.js +2 -0
  60. package/core/ledger/interfaces/Device.d.ts +7 -0
  61. package/core/ledger/interfaces/Device.d.ts.map +1 -0
  62. package/core/ledger/interfaces/Device.js +2 -0
  63. package/core/ledger/interfaces/DeviceResponse.d.ts +7 -0
  64. package/core/ledger/interfaces/DeviceResponse.d.ts.map +1 -0
  65. package/core/ledger/interfaces/DeviceResponse.js +2 -0
  66. package/core/ledger/interfaces/Ledger.d.ts +2 -0
  67. package/core/ledger/interfaces/Ledger.d.ts.map +1 -0
  68. package/core/ledger/interfaces/Ledger.js +2 -0
  69. package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts +12 -0
  70. package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts.map +1 -0
  71. package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.js +2 -0
  72. package/core/ledger/interfaces/LedgerConfig.d.ts +17 -0
  73. package/core/ledger/interfaces/LedgerConfig.d.ts.map +1 -0
  74. package/core/ledger/interfaces/LedgerConfig.js +2 -0
  75. package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts +7 -0
  76. package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts.map +1 -0
  77. package/core/ledger/interfaces/LedgerDeviceInfoResponse.js +2 -0
  78. package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts +5 -0
  79. package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts.map +1 -0
  80. package/core/ledger/interfaces/LedgerSendTransactionResponse.js +2 -0
  81. package/core/ledger/interfaces/LedgerSigner.d.ts +6 -0
  82. package/core/ledger/interfaces/LedgerSigner.d.ts.map +1 -0
  83. package/core/ledger/interfaces/LedgerSigner.js +2 -0
  84. package/core/ledger/interfaces/LedgerSignerData.d.ts +8 -0
  85. package/core/ledger/interfaces/LedgerSignerData.d.ts.map +1 -0
  86. package/core/ledger/interfaces/LedgerSignerData.js +2 -0
  87. package/core/ledger/interfaces/PublicKeyResponse.d.ts +6 -0
  88. package/core/ledger/interfaces/PublicKeyResponse.d.ts.map +1 -0
  89. package/core/ledger/interfaces/PublicKeyResponse.js +2 -0
  90. package/core/ledger/interfaces/SignResponse.d.ts +6 -0
  91. package/core/ledger/interfaces/SignResponse.d.ts.map +1 -0
  92. package/core/ledger/interfaces/SignResponse.js +2 -0
  93. package/core/ledger/interfaces/VersionResponse.d.ts +6 -0
  94. package/core/ledger/interfaces/VersionResponse.d.ts.map +1 -0
  95. package/core/ledger/interfaces/VersionResponse.js +2 -0
  96. package/core/ledger/interfaces/index.d.ts +14 -0
  97. package/core/ledger/interfaces/index.d.ts.map +1 -0
  98. package/core/ledger/interfaces/index.js +29 -0
  99. package/core/ledger/ledger-comm.d.ts +85 -0
  100. package/core/ledger/ledger-comm.d.ts.map +1 -0
  101. package/core/ledger/ledger-comm.js +613 -0
  102. package/core/link/easyConnect.d.ts +23 -0
  103. package/core/link/easyConnect.d.ts.map +1 -0
  104. package/core/link/easyConnect.js +237 -0
  105. package/core/link/easyScript.d.ts +13 -0
  106. package/core/link/easyScript.d.ts.map +1 -0
  107. package/core/link/easyScript.js +52 -0
  108. package/core/link/index.d.ts +2 -0
  109. package/core/link/index.d.ts.map +1 -0
  110. package/core/link/index.js +17 -0
  111. package/core/link/interfaces/IAccount.d.ts +13 -0
  112. package/core/link/interfaces/IAccount.d.ts.map +1 -0
  113. package/core/link/interfaces/IAccount.js +2 -0
  114. package/core/link/interfaces/IFile.d.ts +7 -0
  115. package/core/link/interfaces/IFile.d.ts.map +1 -0
  116. package/core/link/interfaces/IFile.js +2 -0
  117. package/core/link/interfaces/ProofOfWork.d.ts +9 -0
  118. package/core/link/interfaces/ProofOfWork.d.ts.map +1 -0
  119. package/core/link/interfaces/ProofOfWork.js +12 -0
  120. package/core/link/interfaces/index.d.ts +4 -0
  121. package/core/link/interfaces/index.d.ts.map +1 -0
  122. package/core/link/interfaces/index.js +19 -0
  123. package/core/link/phantasmaLink.d.ts +41 -0
  124. package/core/link/phantasmaLink.d.ts.map +1 -0
  125. package/core/link/phantasmaLink.js +479 -0
  126. package/core/rpc/index.d.ts +3 -0
  127. package/core/rpc/index.d.ts.map +1 -0
  128. package/core/rpc/index.js +18 -0
  129. package/core/rpc/interfaces/ABIContract.d.ts +6 -0
  130. package/core/rpc/interfaces/ABIContract.d.ts.map +1 -0
  131. package/core/rpc/interfaces/ABIContract.js +2 -0
  132. package/core/rpc/interfaces/ABIEvent.d.ts +7 -0
  133. package/core/rpc/interfaces/ABIEvent.d.ts.map +1 -0
  134. package/core/rpc/interfaces/ABIEvent.js +2 -0
  135. package/core/rpc/interfaces/ABIMethod.d.ts +7 -0
  136. package/core/rpc/interfaces/ABIMethod.d.ts.map +1 -0
  137. package/core/rpc/interfaces/ABIMethod.js +2 -0
  138. package/core/rpc/interfaces/ABIParameter.d.ts +5 -0
  139. package/core/rpc/interfaces/ABIParameter.d.ts.map +1 -0
  140. package/core/rpc/interfaces/ABIParameter.js +2 -0
  141. package/core/rpc/interfaces/Account.d.ts +16 -0
  142. package/core/rpc/interfaces/Account.d.ts.map +1 -0
  143. package/core/rpc/interfaces/Account.js +2 -0
  144. package/core/rpc/interfaces/AccountTransactions.d.ts +6 -0
  145. package/core/rpc/interfaces/AccountTransactions.d.ts.map +1 -0
  146. package/core/rpc/interfaces/AccountTransactions.js +2 -0
  147. package/core/rpc/interfaces/Archive.d.ts +11 -0
  148. package/core/rpc/interfaces/Archive.d.ts.map +1 -0
  149. package/core/rpc/interfaces/Archive.js +2 -0
  150. package/core/rpc/interfaces/Auction.d.ts +13 -0
  151. package/core/rpc/interfaces/Auction.d.ts.map +1 -0
  152. package/core/rpc/interfaces/Auction.js +2 -0
  153. package/core/rpc/interfaces/Balance.d.ts +8 -0
  154. package/core/rpc/interfaces/Balance.d.ts.map +1 -0
  155. package/core/rpc/interfaces/Balance.js +2 -0
  156. package/core/rpc/interfaces/Block.d.ts +17 -0
  157. package/core/rpc/interfaces/Block.d.ts.map +1 -0
  158. package/core/rpc/interfaces/Block.js +2 -0
  159. package/core/rpc/interfaces/Chain.d.ts +10 -0
  160. package/core/rpc/interfaces/Chain.d.ts.map +1 -0
  161. package/core/rpc/interfaces/Chain.js +2 -0
  162. package/core/rpc/interfaces/Channel.d.ts +13 -0
  163. package/core/rpc/interfaces/Channel.d.ts.map +1 -0
  164. package/core/rpc/interfaces/Channel.js +2 -0
  165. package/core/rpc/interfaces/Contract.d.ts +11 -0
  166. package/core/rpc/interfaces/Contract.d.ts.map +1 -0
  167. package/core/rpc/interfaces/Contract.js +2 -0
  168. package/core/rpc/interfaces/Dapp.d.ts +6 -0
  169. package/core/rpc/interfaces/Dapp.d.ts.map +1 -0
  170. package/core/rpc/interfaces/Dapp.js +2 -0
  171. package/core/rpc/interfaces/Event.d.ts +7 -0
  172. package/core/rpc/interfaces/Event.d.ts.map +1 -0
  173. package/core/rpc/interfaces/Event.js +2 -0
  174. package/core/rpc/interfaces/Governance.d.ts +5 -0
  175. package/core/rpc/interfaces/Governance.d.ts.map +1 -0
  176. package/core/rpc/interfaces/Governance.js +2 -0
  177. package/core/rpc/interfaces/Interop.d.ts +5 -0
  178. package/core/rpc/interfaces/Interop.d.ts.map +1 -0
  179. package/core/rpc/interfaces/Interop.js +2 -0
  180. package/core/rpc/interfaces/KeyValue.d.ts +5 -0
  181. package/core/rpc/interfaces/KeyValue.d.ts.map +1 -0
  182. package/core/rpc/interfaces/KeyValue.js +2 -0
  183. package/core/rpc/interfaces/Leaderboard.d.ts +6 -0
  184. package/core/rpc/interfaces/Leaderboard.d.ts.map +1 -0
  185. package/core/rpc/interfaces/Leaderboard.js +2 -0
  186. package/core/rpc/interfaces/LeaderboardRow.d.ts +5 -0
  187. package/core/rpc/interfaces/LeaderboardRow.d.ts.map +1 -0
  188. package/core/rpc/interfaces/LeaderboardRow.js +2 -0
  189. package/core/rpc/interfaces/NFT.d.ts +14 -0
  190. package/core/rpc/interfaces/NFT.d.ts.map +1 -0
  191. package/core/rpc/interfaces/NFT.js +2 -0
  192. package/core/rpc/interfaces/Nexus.d.ts +14 -0
  193. package/core/rpc/interfaces/Nexus.d.ts.map +1 -0
  194. package/core/rpc/interfaces/Nexus.js +2 -0
  195. package/core/rpc/interfaces/Oracle.d.ts +5 -0
  196. package/core/rpc/interfaces/Oracle.d.ts.map +1 -0
  197. package/core/rpc/interfaces/Oracle.js +2 -0
  198. package/core/rpc/interfaces/Organization.d.ts +6 -0
  199. package/core/rpc/interfaces/Organization.d.ts.map +1 -0
  200. package/core/rpc/interfaces/Organization.js +2 -0
  201. package/core/rpc/interfaces/Paginated.d.ts +8 -0
  202. package/core/rpc/interfaces/Paginated.d.ts.map +1 -0
  203. package/core/rpc/interfaces/Paginated.js +2 -0
  204. package/core/rpc/interfaces/Peer.d.ts +8 -0
  205. package/core/rpc/interfaces/Peer.d.ts.map +1 -0
  206. package/core/rpc/interfaces/Peer.js +2 -0
  207. package/core/rpc/interfaces/Platform.d.ts +9 -0
  208. package/core/rpc/interfaces/Platform.d.ts.map +1 -0
  209. package/core/rpc/interfaces/Platform.js +2 -0
  210. package/core/rpc/interfaces/Receipt.d.ts +10 -0
  211. package/core/rpc/interfaces/Receipt.d.ts.map +1 -0
  212. package/core/rpc/interfaces/Receipt.js +2 -0
  213. package/core/rpc/interfaces/Script.d.ts +9 -0
  214. package/core/rpc/interfaces/Script.d.ts.map +1 -0
  215. package/core/rpc/interfaces/Script.js +2 -0
  216. package/core/rpc/interfaces/SendRawTx.d.ts +5 -0
  217. package/core/rpc/interfaces/SendRawTx.d.ts.map +1 -0
  218. package/core/rpc/interfaces/SendRawTx.js +2 -0
  219. package/core/rpc/interfaces/SignatureResult.d.ts +5 -0
  220. package/core/rpc/interfaces/SignatureResult.d.ts.map +1 -0
  221. package/core/rpc/interfaces/SignatureResult.js +2 -0
  222. package/core/rpc/interfaces/Stake.d.ts +6 -0
  223. package/core/rpc/interfaces/Stake.d.ts.map +1 -0
  224. package/core/rpc/interfaces/Stake.js +2 -0
  225. package/core/rpc/interfaces/Storage.d.ts +8 -0
  226. package/core/rpc/interfaces/Storage.d.ts.map +1 -0
  227. package/core/rpc/interfaces/Storage.js +2 -0
  228. package/core/rpc/interfaces/Swap.d.ts +13 -0
  229. package/core/rpc/interfaces/Swap.d.ts.map +1 -0
  230. package/core/rpc/interfaces/Swap.js +2 -0
  231. package/core/rpc/interfaces/Token.d.ts +19 -0
  232. package/core/rpc/interfaces/Token.d.ts.map +1 -0
  233. package/core/rpc/interfaces/Token.js +2 -0
  234. package/core/rpc/interfaces/TokenData.d.ts +13 -0
  235. package/core/rpc/interfaces/TokenData.d.ts.map +1 -0
  236. package/core/rpc/interfaces/TokenData.js +2 -0
  237. package/core/rpc/interfaces/TokenExternal.d.ts +5 -0
  238. package/core/rpc/interfaces/TokenExternal.d.ts.map +1 -0
  239. package/core/rpc/interfaces/TokenExternal.js +2 -0
  240. package/core/rpc/interfaces/TokenPrice.d.ts +8 -0
  241. package/core/rpc/interfaces/TokenPrice.d.ts.map +1 -0
  242. package/core/rpc/interfaces/TokenPrice.js +2 -0
  243. package/core/rpc/interfaces/TokenSeries.d.ts +12 -0
  244. package/core/rpc/interfaces/TokenSeries.d.ts.map +1 -0
  245. package/core/rpc/interfaces/TokenSeries.js +2 -0
  246. package/core/rpc/interfaces/TransactionData.d.ts +23 -0
  247. package/core/rpc/interfaces/TransactionData.d.ts.map +1 -0
  248. package/core/rpc/interfaces/TransactionData.js +2 -0
  249. package/core/rpc/interfaces/Validator.d.ts +5 -0
  250. package/core/rpc/interfaces/Validator.d.ts.map +1 -0
  251. package/core/rpc/interfaces/Validator.js +2 -0
  252. package/core/rpc/interfaces/index.d.ts +42 -0
  253. package/core/rpc/interfaces/index.d.ts.map +1 -0
  254. package/core/rpc/interfaces/index.js +57 -0
  255. package/core/rpc/phantasma.d.ts +89 -0
  256. package/core/rpc/phantasma.d.ts.map +1 -0
  257. package/core/rpc/phantasma.js +900 -0
  258. package/core/tx/SignatureKind.js +9 -0
  259. package/core/tx/Transaction.d.ts +28 -0
  260. package/core/tx/Transaction.d.ts.map +1 -0
  261. package/core/tx/Transaction.js +209 -0
  262. package/core/tx/index.d.ts +3 -0
  263. package/core/tx/index.d.ts.map +1 -0
  264. package/core/tx/index.js +18 -0
  265. package/core/tx/utils.d.ts +10 -0
  266. package/core/tx/utils.d.ts.map +1 -0
  267. package/core/tx/utils.js +147 -0
  268. package/core/types/Address.d.ts +41 -0
  269. package/core/types/Address.d.ts.map +1 -0
  270. package/core/types/Address.js +276 -0
  271. package/core/types/Consensus.d.ts +61 -0
  272. package/core/types/Consensus.d.ts.map +1 -0
  273. package/core/types/Consensus.js +151 -0
  274. package/core/types/Contract.d.ts +60 -0
  275. package/core/types/Contract.d.ts.map +1 -0
  276. package/core/types/Contract.js +342 -0
  277. package/core/types/DomainSettings.d.ts +87 -0
  278. package/core/types/DomainSettings.d.ts.map +1 -0
  279. package/core/types/DomainSettings.js +107 -0
  280. package/core/types/Ed25519Signature.d.ts +16 -0
  281. package/core/types/Ed25519Signature.d.ts.map +1 -0
  282. package/core/types/Ed25519Signature.js +78 -0
  283. package/core/types/Entropy.d.ts +5 -0
  284. package/core/types/Entropy.d.ts.map +1 -0
  285. package/core/types/Entropy.js +24 -0
  286. package/core/types/Extensions/Base16.d.ts +7 -0
  287. package/core/types/Extensions/Base16.d.ts.map +1 -0
  288. package/core/types/Extensions/Base16.js +36 -0
  289. package/core/types/Extensions/BinaryReader.d.ts +17 -0
  290. package/core/types/Extensions/BinaryReader.d.ts.map +1 -0
  291. package/core/types/Extensions/BinaryReader.js +192 -0
  292. package/core/types/Extensions/BinaryWriter.d.ts +25 -0
  293. package/core/types/Extensions/BinaryWriter.d.ts.map +1 -0
  294. package/core/types/Extensions/BinaryWriter.js +191 -0
  295. package/core/types/Extensions/Describer.d.ts +5 -0
  296. package/core/types/Extensions/Describer.d.ts.map +1 -0
  297. package/core/types/Extensions/Describer.js +25 -0
  298. package/core/types/Extensions/PBinaryReader.d.ts +42 -0
  299. package/core/types/Extensions/PBinaryReader.d.ts.map +1 -0
  300. package/core/types/Extensions/PBinaryReader.js +269 -0
  301. package/core/types/Extensions/PBinaryWriter.d.ts +49 -0
  302. package/core/types/Extensions/PBinaryWriter.d.ts.map +1 -0
  303. package/core/types/Extensions/PBinaryWriter.js +250 -0
  304. package/core/types/Extensions/TableColumns.d.ts +5 -0
  305. package/core/types/Extensions/TableColumns.d.ts.map +1 -0
  306. package/core/types/Extensions/TableColumns.js +22 -0
  307. package/core/types/Extensions/index.d.ts +5 -0
  308. package/core/types/Extensions/index.d.ts.map +1 -0
  309. package/core/types/Extensions/index.js +20 -0
  310. package/core/types/PhantasmaKeys.d.ts +19 -0
  311. package/core/types/PhantasmaKeys.d.ts.map +1 -0
  312. package/core/types/PhantasmaKeys.js +92 -0
  313. package/core/types/Serialization.d.ts +22 -0
  314. package/core/types/Serialization.d.ts.map +1 -0
  315. package/core/types/Serialization.js +195 -0
  316. package/core/types/Stack.d.ts +16 -0
  317. package/core/types/Stack.d.ts.map +1 -0
  318. package/core/types/Stack.js +42 -0
  319. package/core/types/Timestamp.d.ts +26 -0
  320. package/core/types/Timestamp.d.ts.map +1 -0
  321. package/core/types/Timestamp.js +74 -0
  322. package/core/types/index.d.ts +12 -0
  323. package/core/types/index.d.ts.map +1 -0
  324. package/core/types/index.js +27 -0
  325. package/core/utils/index.d.ts +25 -0
  326. package/core/utils/index.d.ts.map +1 -0
  327. package/core/utils/index.js +236 -0
  328. package/core/vm/Contracts.d.ts +17 -0
  329. package/core/vm/Contracts.d.ts.map +1 -0
  330. package/core/vm/Contracts.js +20 -0
  331. package/core/vm/Decoder.d.ts +19 -0
  332. package/core/vm/Decoder.d.ts.map +1 -0
  333. package/core/vm/Decoder.js +175 -0
  334. package/core/vm/EventData.d.ts +97 -0
  335. package/core/vm/EventData.d.ts.map +1 -0
  336. package/core/vm/EventData.js +134 -0
  337. package/core/vm/Opcode.d.ts +57 -0
  338. package/core/vm/Opcode.d.ts.map +1 -0
  339. package/core/vm/Opcode.js +69 -0
  340. package/core/vm/ScriptBuilder.d.ts +65 -0
  341. package/core/vm/ScriptBuilder.d.ts.map +1 -0
  342. package/core/vm/ScriptBuilder.js +592 -0
  343. package/core/vm/VMObject.d.ts +55 -0
  344. package/core/vm/VMObject.d.ts.map +1 -0
  345. package/core/vm/VMObject.js +1101 -0
  346. package/core/vm/VMType.d.ts +12 -0
  347. package/core/vm/VMType.d.ts.map +1 -0
  348. package/core/vm/VMType.js +15 -0
  349. package/core/vm/index.d.ts +8 -0
  350. package/core/vm/index.d.ts.map +1 -0
  351. package/core/vm/index.js +23 -0
  352. package/html/TestWebPage.html +187 -0
  353. package/html/phantasma.js +60504 -0
  354. package/index.d.ts +5 -0
  355. package/index.d.ts.map +1 -0
  356. package/index.js +36 -0
  357. package/jest.config.js +5 -0
  358. package/package.json +67 -0
  359. package/src/core/index.ts +9 -0
  360. package/src/core/interfaces/IContract.ts +28 -0
  361. package/src/core/interfaces/IKeyPair.ts +14 -0
  362. package/src/core/interfaces/ISerializable.ts +6 -0
  363. package/src/core/interfaces/IStack.ts +6 -0
  364. package/src/core/interfaces/IToken.ts +31 -0
  365. package/src/core/interfaces/Signature.ts +32 -0
  366. package/src/core/interfaces/index.ts +6 -0
  367. package/src/core/ledger/Address-Transcode.ts +44 -0
  368. package/src/core/ledger/Ledger-Commands.ts +463 -0
  369. package/src/core/ledger/Ledger-Utils.ts +549 -0
  370. package/src/core/ledger/Mnemonic.ts +79 -0
  371. package/src/core/ledger/Transaction-Sign.ts +126 -0
  372. package/src/core/ledger/Transaction-Transcode.ts +56 -0
  373. package/src/core/ledger/index.ts +8 -0
  374. package/src/core/ledger/interfaces/ApplicationNameResponse.ts +5 -0
  375. package/src/core/ledger/interfaces/Device.ts +6 -0
  376. package/src/core/ledger/interfaces/DeviceResponse.ts +6 -0
  377. package/src/core/ledger/interfaces/Ledger.ts +10 -0
  378. package/src/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.ts +9 -0
  379. package/src/core/ledger/interfaces/LedgerConfig.ts +17 -0
  380. package/src/core/ledger/interfaces/LedgerDeviceInfoResponse.ts +7 -0
  381. package/src/core/ledger/interfaces/LedgerSendTransactionResponse.ts +4 -0
  382. package/src/core/ledger/interfaces/LedgerSigner.ts +6 -0
  383. package/src/core/ledger/interfaces/LedgerSignerData.ts +8 -0
  384. package/src/core/ledger/interfaces/PublicKeyResponse.ts +5 -0
  385. package/src/core/ledger/interfaces/SignResponse.ts +5 -0
  386. package/src/core/ledger/interfaces/VersionResponse.ts +5 -0
  387. package/src/core/ledger/interfaces/index.ts +13 -0
  388. package/src/core/link/easyConnect.ts +214 -0
  389. package/src/core/link/easyScript.ts +67 -0
  390. package/src/core/link/index.ts +1 -0
  391. package/src/core/link/interfaces/IAccount.ts +13 -0
  392. package/src/core/link/interfaces/IFile.ts +6 -0
  393. package/src/core/link/interfaces/ProofOfWork.ts +8 -0
  394. package/src/core/link/interfaces/index.ts +3 -0
  395. package/src/core/link/phantasmaLink.ts +561 -0
  396. package/src/core/rpc/index.ts +2 -0
  397. package/src/core/rpc/interfaces/ABIContract.ts +6 -0
  398. package/src/core/rpc/interfaces/ABIEvent.ts +6 -0
  399. package/src/core/rpc/interfaces/ABIMethod.ts +7 -0
  400. package/src/core/rpc/interfaces/ABIParameter.ts +4 -0
  401. package/src/core/rpc/interfaces/Account.ts +16 -0
  402. package/src/core/rpc/interfaces/AccountTransactions.ts +6 -0
  403. package/src/core/rpc/interfaces/Archive.ts +10 -0
  404. package/src/core/rpc/interfaces/Auction.ts +12 -0
  405. package/src/core/rpc/interfaces/Balance.ts +7 -0
  406. package/src/core/rpc/interfaces/Block.ts +17 -0
  407. package/src/core/rpc/interfaces/Chain.ts +9 -0
  408. package/src/core/rpc/interfaces/Channel.ts +12 -0
  409. package/src/core/rpc/interfaces/Contract.ts +11 -0
  410. package/src/core/rpc/interfaces/Dapp.ts +5 -0
  411. package/src/core/rpc/interfaces/Event.ts +6 -0
  412. package/src/core/rpc/interfaces/Governance.ts +4 -0
  413. package/src/core/rpc/interfaces/Interop.ts +4 -0
  414. package/src/core/rpc/interfaces/KeyValue.ts +4 -0
  415. package/src/core/rpc/interfaces/Leaderboard.ts +6 -0
  416. package/src/core/rpc/interfaces/LeaderboardRow.ts +4 -0
  417. package/src/core/rpc/interfaces/NFT.ts +14 -0
  418. package/src/core/rpc/interfaces/Nexus.ts +14 -0
  419. package/src/core/rpc/interfaces/Oracle.ts +4 -0
  420. package/src/core/rpc/interfaces/Organization.ts +5 -0
  421. package/src/core/rpc/interfaces/Paginated.ts +7 -0
  422. package/src/core/rpc/interfaces/Peer.ts +7 -0
  423. package/src/core/rpc/interfaces/Platform.ts +9 -0
  424. package/src/core/rpc/interfaces/Receipt.ts +9 -0
  425. package/src/core/rpc/interfaces/Script.ts +9 -0
  426. package/src/core/rpc/interfaces/SendRawTx.ts +4 -0
  427. package/src/core/rpc/interfaces/SignatureResult.ts +4 -0
  428. package/src/core/rpc/interfaces/Stake.ts +5 -0
  429. package/src/core/rpc/interfaces/Storage.ts +8 -0
  430. package/src/core/rpc/interfaces/Swap.ts +12 -0
  431. package/src/core/rpc/interfaces/Token.ts +19 -0
  432. package/src/core/rpc/interfaces/TokenData.ts +12 -0
  433. package/src/core/rpc/interfaces/TokenExternal.ts +4 -0
  434. package/src/core/rpc/interfaces/TokenPrice.ts +7 -0
  435. package/src/core/rpc/interfaces/TokenSeries.ts +12 -0
  436. package/src/core/rpc/interfaces/TransactionData.ts +23 -0
  437. package/src/core/rpc/interfaces/Validator.ts +4 -0
  438. package/src/core/rpc/interfaces/index.ts +41 -0
  439. package/src/core/rpc/phantasma.ts +466 -0
  440. package/src/core/tx/Transaction.ts +258 -0
  441. package/src/core/tx/index.ts +2 -0
  442. package/src/core/tx/utils.ts +106 -0
  443. package/src/core/types/Address.ts +290 -0
  444. package/src/core/types/Consensus.ts +181 -0
  445. package/src/core/types/Contract.ts +324 -0
  446. package/src/core/types/DomainSettings.ts +128 -0
  447. package/src/core/types/Ed25519Signature.ts +78 -0
  448. package/src/core/types/Entropy.ts +16 -0
  449. package/src/core/types/Extensions/Base16.ts +36 -0
  450. package/src/core/types/Extensions/Describer.ts +17 -0
  451. package/src/core/types/Extensions/PBinaryReader.ts +247 -0
  452. package/src/core/types/Extensions/PBinaryWriter.ts +278 -0
  453. package/src/core/types/Extensions/index.ts +4 -0
  454. package/src/core/types/PhantasmaKeys.ts +119 -0
  455. package/src/core/types/Serialization.ts +211 -0
  456. package/src/core/types/Stack.ts +46 -0
  457. package/src/core/types/Timestamp.ts +93 -0
  458. package/src/core/types/index.ts +11 -0
  459. package/src/core/utils/index.ts +206 -0
  460. package/src/core/vm/Contracts.ts +17 -0
  461. package/src/core/vm/Decoder.ts +162 -0
  462. package/src/core/vm/Disassembler.ts +1 -0
  463. package/src/core/vm/EventData.ts +135 -0
  464. package/src/core/vm/Opcode.ts +74 -0
  465. package/src/core/vm/ScriptBuilder.ts +588 -0
  466. package/src/core/vm/VMObject.ts +1162 -0
  467. package/src/core/vm/VMType.ts +11 -0
  468. package/src/core/vm/index.ts +7 -0
  469. package/src/core/vm/utils/DisasmMethodCall.ts +22 -0
  470. package/src/core/vm/utils/DisasmUtils.ts +89 -0
  471. package/src/core/vm/utils/index.ts +2 -0
  472. package/src/index.ts +7 -0
  473. package/tests/VMObject.test.ts +146 -0
  474. package/tests/ledger/Address-Transacode.test.ts +26 -0
  475. package/tests/tx/Transaction.test.ts +274 -0
  476. package/tests/types/Address.test.ts +26 -0
  477. package/tests/types/Consensus.test.ts +67 -0
  478. package/tsconfig.json +29 -0
@@ -0,0 +1,11 @@
1
+ export enum VMType {
2
+ None,
3
+ Struct,
4
+ Bytes,
5
+ Number,
6
+ String,
7
+ Timestamp,
8
+ Bool,
9
+ Enum,
10
+ Object,
11
+ }
@@ -0,0 +1,7 @@
1
+ export * from "./ScriptBuilder";
2
+ export * from "./Contracts";
3
+ export * from "./Opcode";
4
+ export * from "./VMType";
5
+ export * from "./EventData";
6
+ export * from "./Decoder";
7
+ export * from "./VMObject";
@@ -0,0 +1,22 @@
1
+ import { VMObject } from "../VMObject";
2
+
3
+ export class DisasmMethodCall {
4
+ public ContractName: string;
5
+ public MethodName: string;
6
+ public Arguments: VMObject[];
7
+
8
+ public toString(): string {
9
+ const sb = Array<string>();
10
+ sb.push(`${this.ContractName}.${this.MethodName}(`);
11
+ for (let i = 0; i < this.Arguments.length; i++) {
12
+ if (i > 0) {
13
+ sb.push(",");
14
+ }
15
+
16
+ const arg = this.Arguments[i];
17
+ sb.push(arg.toString());
18
+ }
19
+ sb.push(")");
20
+ return sb.join("");
21
+ }
22
+ }
@@ -0,0 +1,89 @@
1
+ import { IContract, NativeContractKind } from "../../interfaces";
2
+ import { Stack } from "../../types";
3
+ import { VMObject } from "../VMObject";
4
+
5
+ export class DisasmUtils {
6
+ private static PopArgs(
7
+ contract: string,
8
+ method: string,
9
+ stack: Stack<VMObject>,
10
+ methodArgumentCountTable: { [key: string]: number }
11
+ ): VMObject[] {
12
+ let key = method;
13
+ if (contract != null) {
14
+ key = `${contract}.${method}`;
15
+ }
16
+
17
+ if (methodArgumentCountTable.hasOwnProperty(key)) {
18
+ let argCount = methodArgumentCountTable[key];
19
+ let result: Array<VMObject> = new Array<VMObject>(argCount);
20
+ for (let i = 0; i < argCount; i++) {
21
+ if (stack.size() == 0) {
22
+ throw new Error(
23
+ `Cannot disassemble method => method ${key} expected ${argCount} args, ${i} were fetched`
24
+ );
25
+ }
26
+ //result[i] = stack.pop();
27
+ }
28
+ return result;
29
+ } else {
30
+ throw new Error(`Cannot disassemble method => unknown name: ${key}`);
31
+ }
32
+ }
33
+
34
+ //private static _defaultDisasmTable = DisasmUtils.GetDefaultDisasmTable();
35
+
36
+ /*public static GetDefaultDisasmTable(): { [key: string]: number } {
37
+ if (DisasmUtils._defaultDisasmTable != null) {
38
+ return DisasmUtils._defaultDisasmTable;
39
+ }
40
+ let table: { [key: string]: number } = {};
41
+
42
+ ExtCalls.IterateExtcalls((methodName: string, argCount: number, method: any) => {
43
+ table[methodName] = argCount;
44
+ });
45
+
46
+ let nativeContracts = Enum.GetValues(NativeContractKind);
47
+ for (const kind of nativeContracts) {
48
+ if (kind == NativeContractKind.Unknown) {
49
+ continue;
50
+ }
51
+ let contract = NativeContract.GetNativeContractByKind(kind);
52
+ table.AddContractToTable(contract);
53
+ }
54
+
55
+ return table;
56
+ }
57
+
58
+ public static AddContractToTable(table: { [key: string]: number }, contract: IContract) {
59
+ let abi = contract.ABI;
60
+
61
+ for (const method of abi.Methods) {
62
+ let key = `${contract.Name}.${method.name}`;
63
+ table[key] = method.parameters.length;
64
+ }
65
+ }
66
+
67
+ public static AddTokenToTable(table: { [key: string]: number }, token: IToken) {
68
+ let abi = token.ABI;
69
+
70
+ for (const method of abi.Methods) {
71
+ let key = `${token.Symbol}.${method.name}`;
72
+ table[key] = method.parameters.length;
73
+ }
74
+ }
75
+
76
+ public static ExtractContractNames(disassembler: Disassembler): string[] {
77
+ let instructions = disassembler.Instructions.toArray();
78
+ let result = new Array<string>();
79
+
80
+ let index = 0;
81
+ let regs = new Array<VMObject>(16);
82
+ while (index < instructions.length) {
83
+ let instruction = instructions[index];
84
+
85
+ switch (instruction.Opcode) {
86
+ case Opcode.LOAD: {
87
+ let dst = instruction.Args[0] as number;
88
+ let type = instruction.Args*/
89
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./DisasmUtils";
2
+ export * from "./DisasmMethodCall";
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
2
+
3
+ export * from './core/index';
4
+ export * as PhantasmaTS from './core/index';
5
+ export { PhantasmaLink } from './core/link/phantasmaLink';
6
+ export { EasyConnect } from './core/link/easyConnect';
7
+ //const TransportWebUSB = require('@ledgerhq/hw-transport-webusb').default;
@@ -0,0 +1,146 @@
1
+ import { BinaryReader, BinaryWriter } from "csharp-binary-stream";
2
+ import { Type } from "typescript";
3
+ import {
4
+ Base16,
5
+ PBinaryWriter,
6
+ PollChoice,
7
+ Serialization,
8
+ Timestamp,
9
+ Transaction,
10
+ VMObject,
11
+ VMType,
12
+ } from "../core";
13
+
14
+ describe("VM index file", () => {
15
+ test("empty string should result in zero", () => {
16
+ let vm = new VMObject();
17
+
18
+ expect(vm).toBeInstanceOf(VMObject);
19
+ expect(vm.Type).toBe(VMType.None);
20
+ });
21
+
22
+ test("String VM", () => {
23
+ let vm = new VMObject();
24
+ let myNewVM = VMObject.FromObject("MyString");
25
+
26
+ expect(myNewVM).toBeInstanceOf(VMObject);
27
+ expect(myNewVM.Type).toBe(VMType.String);
28
+ let result = myNewVM.AsString();
29
+ expect(result).toBe("MyString");
30
+ });
31
+
32
+ test("Number VM", () => {
33
+ let vm = new VMObject();
34
+ let myNewVM = VMObject.FromObject(5);
35
+
36
+ expect(myNewVM).toBeInstanceOf(VMObject);
37
+ expect(myNewVM.Type).toBe(VMType.Number);
38
+ let result = myNewVM.AsString();
39
+ expect(result).toBe("5");
40
+ expect(myNewVM.AsNumber()).toBe(5);
41
+ });
42
+
43
+ /*test("Bool VM", () => {
44
+ let vm = new phantasmaJS.VMObject();
45
+ let myNewVM = VMObject.FromObject(true);
46
+
47
+ expect(myNewVM).toBeInstanceOf(phantasmaJS.VMObject);
48
+ expect(myNewVM.Type).toBe(phantasmaJS.VMType.Bool);
49
+ expect(myNewVM.AsString()).toBe("true");
50
+ expect(myNewVM.AsBool()).toBe(true);
51
+ });
52
+
53
+ test("Struct VM", () => {
54
+ let vm = new phantasmaJS.VMObject();
55
+ let choice = new phantasmaJS.PollChoice("myChoice");
56
+ let myNewVM = VMObject.FromStruct(choice);
57
+
58
+ expect(myNewVM).toBeInstanceOf(phantasmaJS.VMObject);
59
+ expect(myNewVM.Type).toBe(phantasmaJS.VMType.Struct);
60
+ let result = myNewVM.ToStruct(PollChoice) as PollChoice;
61
+ expect(result).toStrictEqual(choice);
62
+ });
63
+
64
+ test("TestTypes", () => {
65
+ let vm = new phantasmaJS.VMObject();
66
+ let choice = new phantasmaJS.PollChoice("myChoice");
67
+ let myNewVM = VMObject.FromStruct(choice);
68
+
69
+ expect(VMObject.isPrimitive(PollChoice)).toBe(false);
70
+ expect(VMObject.isValueType(PollChoice)).toBe(false);
71
+ expect(VMObject.isClass(PollChoice)).toBe(true);
72
+ expect(VMObject.isEnum(PollChoice)).toBe(false);
73
+ expect(VMObject.isSerializable(PollChoice)).toBe(true);
74
+ expect(VMObject.isInterface(PollChoice)).toBe(false);
75
+ expect(VMObject.isStructOrClass(PollChoice as unknown as Type)).toBe(true);
76
+ expect(myNewVM.Type).toBe(phantasmaJS.VMType.Struct);
77
+ });*/
78
+
79
+ test("PollChoices", () => {
80
+ let vm = new VMObject();
81
+ let choice = new PollChoice("myChoice");
82
+ let choice2 = new PollChoice("myChoice");
83
+ let choices: PollChoice[] = [choice, choice2];
84
+ let myNewVM = VMObject.FromArray(choices);
85
+
86
+ expect(myNewVM).toBeInstanceOf(VMObject);
87
+ expect(myNewVM.Type).toBe(VMType.Struct);
88
+ //let result = myNewVM.ToArray(PollChoice) as PollChoice[];
89
+ //expect(result).toStrictEqual(choices);
90
+ });
91
+
92
+ test("Serialization", () => {
93
+ let vm = new VMObject();
94
+ let choice = new PollChoice("myChoice");
95
+ let choice2 = new PollChoice("myChoice");
96
+ let time = new Timestamp(10000);
97
+ let choices: PollChoice[] = [choice, choice2];
98
+
99
+ class myTestClass {
100
+ name: string = "test";
101
+ choices: PollChoice[] = choices;
102
+ time: Timestamp = time;
103
+ constructor() {}
104
+ }
105
+
106
+ let testClass = new myTestClass();
107
+
108
+ let choice1Serialized = Serialization.Serialize(testClass);
109
+ let choice1Deserialized = Serialization.Unserialize<myTestClass>(
110
+ choice1Serialized,
111
+ myTestClass
112
+ );
113
+
114
+ let myVM = VMObject.FromObject(choice1Serialized);
115
+ let writer = new PBinaryWriter();
116
+ let result = myVM.SerializeData(writer);
117
+
118
+ /*let choicesSerialized: Uint8Array[] = [
119
+ Serialization.Serialize(choice),
120
+ Serialization.Serialize(choice2),
121
+ ];
122
+ let myNewVM = VMObject.FromArray(choices);
123
+
124
+ expect(myNewVM).toBeInstanceOf(phantasmaJS.VMObject);
125
+ expect(myNewVM.Type).toBe(phantasmaJS.VMType.Struct);
126
+ let writer = new PBinaryWriter();
127
+ let result = myNewVM.SerializeData(writer);
128
+ expect(writer.toArray()).toStrictEqual(choices);*/
129
+ });
130
+
131
+ test("Serialization2", () => {
132
+ let choice = new PollChoice("myChoice");
133
+ let choice2 = new PollChoice("myChoice");
134
+ let choices: PollChoice[] = [choice, choice2];
135
+ let choicesSerialized = Serialization.Serialize(choices);
136
+ });
137
+
138
+ test("DecodeBool", () => {
139
+ let vmCode = "0601";
140
+ let bytes = Base16.decodeUint8Array(vmCode);
141
+ let vm = VMObject.FromBytes(bytes);
142
+
143
+ expect(vm.Type).toBe(VMType.Bool);
144
+ expect(vm.AsBool()).toBe(true);
145
+ });
146
+ });
@@ -0,0 +1,26 @@
1
+ import {} from '../..';
2
+ import crypto from 'crypto';
3
+ import wif from 'wif';
4
+ import {
5
+ Address,
6
+ ConsensusMode,
7
+ encodeBase16,
8
+ generateNewWif,
9
+ getAddressFromWif,
10
+ getPrivateKeyFromWif,
11
+ getWifFromPrivateKey,
12
+ PhantasmaKeys,
13
+ PollChoice,
14
+ Serialization,
15
+ Timestamp,
16
+ VMObject,
17
+ } from '../../core';
18
+
19
+ describe('Address Transcode', () => {
20
+ test('Get a new address', () => {
21
+ const privateKey = crypto.randomBytes(32).toString('hex').toUpperCase();
22
+ const walletWif = wif.encode(128, Buffer.from(privateKey, 'hex'), true);
23
+ //const expectedAddress = phantasmaJS.getAddressFromWif(walletWif);
24
+ //const actualAddress = addressTranscodeUtil.getAddressFromPrivateKey(privateKey);
25
+ });
26
+ });
@@ -0,0 +1,274 @@
1
+ import Buffer from 'buffer';
2
+ import { PollChoice } from '../../';
3
+ import crypto from 'crypto';
4
+ import {
5
+ Address,
6
+ Base16,
7
+ Ed25519Signature,
8
+ encodeBase16,
9
+ getAddressFromWif,
10
+ getWifFromPrivateKey,
11
+ PBinaryReader,
12
+ PBinaryWriter,
13
+ PhantasmaKeys,
14
+ ScriptBuilder,
15
+ Serialization,
16
+ stringToUint8Array,
17
+ Timestamp,
18
+ Transaction,
19
+ uint8ArrayToHex,
20
+ uint8ArrayToString,
21
+ uint8ArrayToStringDefault,
22
+ VMObject,
23
+ VMType,
24
+ } from '../../core';
25
+
26
+ describe('test phantasma_ts', function () {
27
+ test('test phantasma-ts.Transaction.SerializeData', function (done) {
28
+ let writer = new PBinaryWriter();
29
+ let keys = PhantasmaKeys.generate();
30
+
31
+ let nexusName = 'nexus';
32
+ let chainName = 'main';
33
+ let script = 'script';
34
+ let expiration = new Date(17898129498);
35
+ let payload = 'payload';
36
+ let signatures = [new Ed25519Signature()];
37
+ writer.writeString(nexusName);
38
+ let tx = new Transaction(nexusName, chainName, script, expiration, payload);
39
+ tx.signWithKeys(keys);
40
+ tx.SerializeData(writer);
41
+ /*expect(writer.toUint8Array()).toBe([
42
+ 5, 110, 101, 120, 117, 115, 5, 110, 101, 120, 117, 115, 5, 109, 97, 105,
43
+ 110,
44
+ ]);*/
45
+ done();
46
+ });
47
+
48
+ test('sginature', function (done) {
49
+ let writer = new PBinaryWriter();
50
+ let keys = PhantasmaKeys.generate();
51
+
52
+ let wifTest = 'L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx';
53
+ let keyFromWif = PhantasmaKeys.fromWIF(wifTest);
54
+
55
+ expect(keyFromWif.toWIF()).toBe(wifTest);
56
+
57
+ let nexusName = 'nexus';
58
+ let chainName = 'main';
59
+ let script = 'script';
60
+ let expiration = new Date(17898129498);
61
+ let payload = 'payload';
62
+ let tx = new Transaction(nexusName, chainName, script, expiration, payload);
63
+
64
+ let wif = keys.toWIF();
65
+ let pk = uint8ArrayToHex(keys.PrivateKey);
66
+
67
+ tx.sign(wif);
68
+
69
+ tx.signWithPrivateKey(pk);
70
+
71
+ /*let wif = getWifFromPrivateKey(
72
+ uint8ArrayToString(Array.from(keys.PrivateKey) as Uint8Array)
73
+ );
74
+ let pk = uint8ArrayToString(Array.from(keys.PrivateKey));
75
+
76
+ console.log(wif, getAddressFromWif(wif), pk);
77
+
78
+ tx.sign(pk);
79
+ tx.SerializeData(writer);*/
80
+ done();
81
+ });
82
+
83
+ test('Test signature ts and c#', function (done) {
84
+ let nexusName = 'testnet';
85
+ let chainName = 'main';
86
+ let wif = 'L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx';
87
+ let uintArray = Uint8Array.from([0x01, 0x02, 0x03]);
88
+ let script = uint8ArrayToHex(uintArray);
89
+ let time = new Timestamp(1234567890);
90
+ let date = new Date(time.toString());
91
+ let payload = 'payload';
92
+ let keys = PhantasmaKeys.fromWIF(wif);
93
+ let tx = new Transaction(nexusName, chainName, script, date, payload);
94
+
95
+ tx.signWithKeys(keys);
96
+
97
+ let fromCsharp =
98
+ '07746573746E6574046D61696E03010203D2029649077061796C6F61640101404C033859A20A4FC2E469B3741FB05ACEDFEC24BFE92E07633680488665D79F916773FF40D0E81C4468E1C1487E6E1E6EEFDA5C5D7C53C15C4FB349C2349A1802';
99
+ let fromCsharpBytes = Buffer.Buffer.from(fromCsharp, 'hex');
100
+ let bytes = stringToUint8Array(fromCsharp);
101
+ let fromCsharpTx = Transaction.Unserialize(fromCsharpBytes);
102
+
103
+ expect(fromCsharpTx.chainName).toBe(tx.chainName);
104
+ expect(fromCsharpTx.nexusName).toBe(tx.nexusName);
105
+ expect(fromCsharpTx.script).toBe(tx.script);
106
+ expect(fromCsharpTx.payload).toBe(Base16.encode(tx.payload));
107
+ expect(fromCsharpTx.expiration).toStrictEqual(tx.expiration);
108
+ expect(fromCsharpTx.signatures.length).toBe(tx.signatures.length);
109
+ expect(fromCsharpTx.signatures[0].Kind).toBe(tx.signatures[0].Kind);
110
+ expect(fromCsharpTx.signatures[0].ToByteArray()).toStrictEqual(tx.signatures[0].ToByteArray());
111
+
112
+ done();
113
+ });
114
+
115
+ test('Transaction Serialized to bytes', function (done) {
116
+ let nexusName = 'testnet';
117
+ let chainName = 'main';
118
+ let subject = 'system.nexus.protocol.version';
119
+ let wif = 'L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx';
120
+ let mode = 1;
121
+ let choice = new PollChoice('myChoice');
122
+ let choice2 = new PollChoice('myChoice');
123
+ let choices = [choice, choice2];
124
+ let choicesSerialized = Serialization.Serialize(choices);
125
+ let time = new Timestamp(1234567890);
126
+ let date = new Date(time.toString());
127
+ let startTime = time;
128
+ let endTime = new Timestamp(time.value + 86400);
129
+ let payload = Base16.encode('Consensus'); // hex string
130
+
131
+ let keys = PhantasmaKeys.fromWIF(wif);
132
+ let sb = new ScriptBuilder();
133
+
134
+ let gasLimit = 10000;
135
+ let gasPrice = 210000;
136
+
137
+ let script = sb
138
+ .AllowGas(keys.Address, Address.Null, gasLimit, gasPrice)
139
+ .CallContract('consensus', 'SingleVote', [keys.Address.Text, subject, 0])
140
+ .SpendGas(keys.Address)
141
+ .EndScript();
142
+
143
+ expect(script).toBe(
144
+ '0D00030350340303000D000302102703000D000223220000000000000000000000000000000000000000000000000000000000000000000003000D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D000408416C6C6F7747617303000D0004036761732D00012E010D0003010003000D00041D73797374656D2E6E657875732E70726F746F636F6C2E76657273696F6E03000D00042F50324B464579466576705166536157384734566A536D6857555A585234517247395951523148624D7054554370434C03000D00040A53696E676C65566F746503000D000409636F6E73656E7375732D00012E010D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D0004085370656E6447617303000D0004036761732D00012E010B'
145
+ );
146
+
147
+ let tx = new Transaction(nexusName, chainName, script, date, payload);
148
+
149
+ tx.signWithKeys(keys);
150
+
151
+ expect(uint8ArrayToHex(tx.ToByteAray(true)).toUpperCase()).toBe(
152
+ '07746573746E6574046D61696EFD42010D00030350340303000D000302102703000D000223220000000000000000000000000000000000000000000000000000000000000000000003000D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D000408416C6C6F7747617303000D0004036761732D00012E010D0003010003000D00041D73797374656D2E6E657875732E70726F746F636F6C2E76657273696F6E03000D00042F50324B464579466576705166536157384734566A536D6857555A585234517247395951523148624D7054554370434C03000D00040A53696E676C65566F746503000D000409636F6E73656E7375732D00012E010D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D0004085370656E6447617303000D0004036761732D00012E010BD202964909436F6E73656E737573010140F1C0410D49A5EDF0945B0EE9FAFDF6CA1FC315118D545E07824BEF1BA1F00881C29419648FD0B8200A356D21FAF45C60F4B77279D931CE4D732F5896E93BFE0D'
153
+ );
154
+ done();
155
+ });
156
+
157
+ test('New MultiSig Tests', function (done) {
158
+ let keys = PhantasmaKeys.fromWIF('L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx');
159
+ let nexusName = 'testnet';
160
+ let chainName = 'main';
161
+ let subject = 'teste';
162
+ let listOfUsers: Array<string> = [
163
+ keys.Address.Text,
164
+ 'P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL',
165
+ ];
166
+
167
+ let time = new Timestamp(1234567890);
168
+ let date = new Date(time.toString());
169
+ let payload = Base16.encode(subject); // hex string
170
+ var transaction = new Transaction(nexusName, chainName, '', date, payload);
171
+
172
+ let gasLimit = 100000;
173
+ let gasPrice = 210000;
174
+ let txBytes = '';
175
+ let sb = new ScriptBuilder();
176
+
177
+ expect(Base16.encodeUint8Array(transaction.ToByteAray(false))).toBe(
178
+ '07746573746E6574046D61696E00D2029649057465737465'
179
+ );
180
+
181
+ let script = sb
182
+ //.AllowGas(keys.Address, Address.Null, gasLimit, gasPrice)
183
+ .CallContract('consensus', 'CreateTransaction', [1, listOfUsers])
184
+ //.SpendGas(keys.Address)
185
+ .EndScript();
186
+
187
+ expect(script).toBe(
188
+ '0E0000000D01042F50324B464579466576705166536157384734566A536D6857555A585234517247395951523148624D7054554370434C0D020301002F0100020D01042F50324B464579466576705166536157384734566A536D6857555A585234517247395951523148624D7054554370434C0D020301012F01000203000D0003010103000D0004114372656174655472616E73616374696F6E03000D000409636F6E73656E7375732D00012E010B'
189
+ );
190
+
191
+ done();
192
+ });
193
+
194
+ test('New MultiSig With addressTests', function (done) {
195
+ let keys = PhantasmaKeys.fromWIF('L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx');
196
+ let nexusName = 'testnet';
197
+ let chainName = 'main';
198
+ let subject = 'teste';
199
+ let listOfUsers: Array<string> = [
200
+ 'P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL',
201
+ 'P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL',
202
+ ];
203
+
204
+ const listUserAddr = listOfUsers.map((user) => Address.FromText(user));
205
+
206
+ let time = new Timestamp(1234567890);
207
+ let date = new Date(time.toString());
208
+ let payload = Base16.encode(subject); // hex string
209
+ var transaction = new Transaction(nexusName, chainName, '', date, payload);
210
+
211
+ let gasLimit = 100000;
212
+ let gasPrice = 210000;
213
+ //let txBytes = transaction.SerializeData();
214
+ let sb = new ScriptBuilder();
215
+
216
+ expect(Base16.encodeUint8Array(transaction.ToByteAray(false))).toBe(
217
+ '07746573746E6574046D61696E00D2029649057465737465'
218
+ );
219
+
220
+ expect(Base16.encodeUint8Array(Serialization.Serialize(transaction))).toBe(
221
+ '07746573746E6574046D61696E00D202964905746573746500'
222
+ );
223
+
224
+ let script = sb
225
+ .AllowGas(keys.Address, Address.Null, gasLimit, gasPrice)
226
+ .CallContract('consensus', 'CreateTransaction', [
227
+ keys.Address.Text,
228
+ subject,
229
+ Serialization.Serialize(transaction),
230
+ listUserAddr,
231
+ ])
232
+ .SpendGas(keys.Address)
233
+ .EndScript();
234
+
235
+ expect(script).toBe(
236
+ '0D00030350340303000D000303A0860103000D000223220000000000000000000000000000000000000000000000000000000000000000000003000D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D000408416C6C6F7747617303000D0004036761732D00012E010E0000000D010223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB48950D020301002F0100020D010223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB48950D020301012F01000203000D00021907746573746E6574046D61696E00D20296490574657374650003000D000405746573746503000D00042F50324B464579466576705166536157384734566A536D6857555A585234517247395951523148624D7054554370434C03000D0004114372656174655472616E73616374696F6E03000D000409636F6E73656E7375732D00012E010D000223220100AA53BE71FC41BC0889B694F4D6D03F7906A3D9A21705943CAF9632EEAFBB489503000D0004085370656E6447617303000D0004036761732D00012E010B'
237
+ );
238
+
239
+ done();
240
+ });
241
+ test('SimpleScript', function (done) {
242
+ let keys = PhantasmaKeys.fromWIF('L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx');
243
+
244
+ let sb = new ScriptBuilder();
245
+
246
+ let script = sb
247
+ .CallContract('stake', 'Stake', [keys.Address.Text, keys.Address.Text])
248
+ .EndScript();
249
+
250
+ done();
251
+ });
252
+
253
+ test('Test ScriptBuilder', function (done) {
254
+ let keys = PhantasmaKeys.fromWIF('L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx');
255
+
256
+ let sb = new ScriptBuilder();
257
+
258
+ let amount = 10000000;
259
+ let script = sb
260
+ .AllowGas(keys.Address.Text, Address.NullText, 10000, 21000)
261
+ .CallInterop('Runtime.TransferTokens', [
262
+ keys.Address.Text,
263
+ keys.Address.Text,
264
+ 'SOUL',
265
+ String(amount),
266
+ ])
267
+ .SpendGas(keys.Address.Text)
268
+ .EndScript();
269
+
270
+ console.log('script', script);
271
+
272
+ done();
273
+ });
274
+ });
@@ -0,0 +1,26 @@
1
+ import { Address, PhantasmaKeys } from "../../core";
2
+
3
+ describe("test Addresses", function () {
4
+ test("test address", function (done) {
5
+ let wif = "L5UEVHBjujaR1721aZM5Zm5ayjDyamMZS9W35RE9Y9giRkdf3dVx";
6
+ let keys = PhantasmaKeys.fromWIF(wif);
7
+ let address = keys.Address;
8
+
9
+ expect(address.Text).toBe(
10
+ "P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL"
11
+ );
12
+
13
+ done();
14
+ });
15
+
16
+ test("test address from text", function (done) {
17
+ let addr = Address.FromText(
18
+ "P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL"
19
+ );
20
+ let address = addr.Text;
21
+
22
+ expect(address).toBe("P2KFEyFevpQfSaW8G4VjSmhWUZXR4QrG9YQR1HbMpTUCpCL");
23
+
24
+ done();
25
+ });
26
+ });
@@ -0,0 +1,67 @@
1
+ import {
2
+ Base16,
3
+ ConsensusPoll,
4
+ hexStringToUint8Array,
5
+ PBinaryReader,
6
+ PollValue,
7
+ Serialization,
8
+ stringToUint8Array,
9
+ uint8ArrayToString,
10
+ uint8ArrayToStringDefault,
11
+ VMObject,
12
+ } from "../../core";
13
+
14
+ describe("Consensus Tests", () => {
15
+ test("Consensus Array Unserialize", function (done) {
16
+ const SerializeData =
17
+ "010203010008B401020301000850166E657875732E70726F746F636F6C2E76657273696F6E0A76616C696461746F7273010102000000013903FFFFFF03F4010002313003FFFFFF010002010027E1CF638B3FD16302010002050080C613000302010008571D73797374656D2E6E657875732E70726F746F636F6C2E76657273696F6E0A76616C696461746F7273010102000000013903FFFFFF03F4010002313003FFFFFF01000201005550D163D5A1D26302010002050080C613000302010008B401020301000850166E657875732E70726F746F636F6C2E76657273696F6E0A76616C696461746F7273010102000000013903FFFFFF03F4010002313003FFFFFF010002010027E1CF638B3FD16302010002050080C613000302010008571D73797374656D2E6E657875732E70726F746F636F6C2E76657273696F6E0A76616C696461746F7273010102000000013903FFFFFF03F4010002313003FFFFFF01000201005550D163D5A1D26302010002050080C61300";
18
+
19
+ /*const arrayBytes = Base16.decodeUint8Array(SerializeData);
20
+ const readerVM = new PBinaryReader(arrayBytes);
21
+ const vm = new VMObject();
22
+ vm.UnserializeData(readerVM);
23
+ for (let map of vm.GetChildren()![1]) {
24
+ console.log(map[0], " - ", map[1]);
25
+ let lBytes = Base16.decodeUint8Array(
26
+ uint8ArrayToStringDefault(map[1].AsByteArray())
27
+ );
28
+ }*/
29
+
30
+ //const consensus = Serialization.Unserialize(reader, Array<ConsensusPoll>);
31
+ //console.log(arrayBytes);
32
+ done();
33
+ });
34
+
35
+ test("Consensus Single Unserialize", function (done) {
36
+ const SerializeData =
37
+ "010B04077375626A656374041D73797374656D2E6E657875732E70726F746F636F6C2E76657273696F6E040C6F7267616E697A6174696F6E040A76616C696461746F727304046D6F646507010405737461746507010407656E74726965730102030100080A013903FFFFFF03F4010003020100080902313003FFFFFF01000405726F756E64030201000409737461727454696D65055550D1630407656E6454696D6505D5A1D263040E63686F696365735065725573657203020100040A746F74616C566F74657303020500040D636F6E73656E73757354696D650580C61300";
38
+
39
+ const arrayBytes = Base16.decodeUint8Array(SerializeData);
40
+ const vm = new VMObject();
41
+ const readerVM = new PBinaryReader(arrayBytes);
42
+ vm.UnserializeData(readerVM);
43
+ let con = vm.ToStruct<ConsensusPoll>(ConsensusPoll);
44
+ con.entries.forEach((entry) => {
45
+ //console.log(entry);
46
+ let entryValue = entry as unknown as string;
47
+ let pollValueBytes = Base16.decodeUint8Array(entryValue);
48
+ let pollValue = new PollValue();
49
+ let reader = new PBinaryReader(pollValueBytes);
50
+ pollValue.UnserializeData(reader);
51
+ //console.log(pollValue);
52
+
53
+ //pollValue.UnserializeData(reader);
54
+
55
+ //console.log(reader.read());
56
+ });
57
+ expect(con.subject).toBe("system.nexus.protocol.version");
58
+ expect(con.organization).toBe("validators");
59
+ expect(con.mode).toBe(1);
60
+ expect(con.state).toBe(1);
61
+ expect(con.startTime.value).toBe(1674661973);
62
+ expect(con.endTime.value).toBe(1674748373);
63
+ expect(con.choicesPerUser).toBe(1);
64
+ expect(con.totalVotes).toBe(5);
65
+ done();
66
+ });
67
+ });