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,181 @@
1
+ import { Encoding } from "csharp-binary-stream";
2
+ import { ISerializable } from "../interfaces";
3
+ import {
4
+ byteArrayToHex,
5
+ stringToUint8Array,
6
+ uint8ArrayToBytes,
7
+ uint8ArrayToHex,
8
+ uint8ArrayToString,
9
+ } from "../utils";
10
+ import { Base16, PBinaryReader, PBinaryWriter } from "./Extensions";
11
+ import { Timestamp } from "./Timestamp";
12
+
13
+ export enum ConsensusMode {
14
+ Unanimity,
15
+ Majority,
16
+ Popularity,
17
+ Ranking,
18
+ }
19
+
20
+ export enum PollState {
21
+ Inactive,
22
+ Active,
23
+ Consensus,
24
+ Failure,
25
+ }
26
+
27
+ export class PollChoice implements ISerializable {
28
+ public value: string; // Should be byte[]
29
+
30
+ public constructor(value: string | number[]) {
31
+ if (value instanceof Array)
32
+ this.value = Base16.decode(byteArrayToHex(value));
33
+ else this.value = value;
34
+ }
35
+
36
+ SerializeData(writer: PBinaryWriter) {
37
+ writer.writeByteArray(stringToUint8Array(this.value));
38
+ }
39
+
40
+ UnserializeData(reader: PBinaryReader) {
41
+ this.value = Base16.decode(reader.readByteArray());
42
+ }
43
+
44
+ static Unserialize(reader: PBinaryReader): PollChoice {
45
+ let pollChoice = new PollChoice("");
46
+ pollChoice.UnserializeData(reader);
47
+ return pollChoice;
48
+ }
49
+ }
50
+
51
+ export class PollValue implements ISerializable {
52
+ public value: string; // Should be byte[]
53
+ public ranking: BigInt;
54
+ public votes: BigInt;
55
+
56
+ SerializeData(writer: PBinaryWriter) {
57
+ writer.writeByteArray(stringToUint8Array(this.value));
58
+ writer.writeBigInteger(this.ranking);
59
+ writer.writeBigInteger(this.votes);
60
+ }
61
+
62
+ UnserializeData(reader: PBinaryReader) {
63
+ this.value = Base16.decode(reader.readByteArray());
64
+ this.ranking = reader.readBigInteger();
65
+ this.votes = reader.readBigInteger();
66
+ }
67
+
68
+ static Unserialize(reader: PBinaryReader): PollValue {
69
+ let pollValue = new PollValue();
70
+ pollValue.UnserializeData(reader);
71
+ return pollValue;
72
+ }
73
+ }
74
+
75
+ export class PollVote implements ISerializable {
76
+ public index: BigInt;
77
+ public percentage: BigInt;
78
+
79
+ SerializeData(writer: PBinaryWriter) {
80
+ writer.writeBigInteger(this.index);
81
+ writer.writeBigInteger(this.percentage);
82
+ }
83
+ UnserializeData(reader: PBinaryReader) {
84
+ this.index = reader.readBigInteger();
85
+ this.percentage = reader.readBigInteger();
86
+ }
87
+
88
+ static Unserialize(reader: PBinaryReader): PollVote {
89
+ let pollVote = new PollVote();
90
+ pollVote.UnserializeData(reader);
91
+ return pollVote;
92
+ }
93
+ }
94
+
95
+ export class ConsensusPoll implements ISerializable {
96
+ public subject: string;
97
+ public organization: string;
98
+ public mode: ConsensusMode;
99
+ public state: PollState;
100
+ public entries: PollValue[];
101
+ public round: BigInt;
102
+ public startTime: Timestamp;
103
+ public endTime: Timestamp;
104
+ public choicesPerUser: BigInt;
105
+ public totalVotes: BigInt;
106
+
107
+ constructor() {
108
+ this.subject = "";
109
+ this.organization = "";
110
+ this.mode = ConsensusMode.Unanimity;
111
+ this.state = PollState.Inactive;
112
+ this.entries = [];
113
+ this.round = BigInt(0);
114
+ this.startTime = Timestamp.null;
115
+ this.endTime = Timestamp.null;
116
+ this.choicesPerUser = BigInt(0);
117
+ this.totalVotes = BigInt(0);
118
+ }
119
+
120
+ SerializeData(writer: PBinaryWriter) {
121
+ writer.writeString(this.subject);
122
+ writer.writeString(this.organization);
123
+ writer.writeByte(this.mode);
124
+ writer.writeByte(this.state);
125
+ writer.writeByte(this.entries.length);
126
+
127
+ this.entries.forEach((entry) => {
128
+ entry.SerializeData(writer);
129
+ });
130
+
131
+ writer.writeBigInteger(this.round);
132
+ writer.writeTimestamp(this.startTime);
133
+ writer.writeTimestamp(this.endTime);
134
+ writer.writeBigInteger(this.choicesPerUser);
135
+ writer.writeBigInteger(this.totalVotes);
136
+ }
137
+ UnserializeData(reader: PBinaryReader) {
138
+ this.subject = reader.readString();
139
+ this.organization = reader.readString();
140
+ this.mode = reader.readByte() as ConsensusMode;
141
+ this.state = reader.readByte() as PollState;
142
+
143
+ this.entries = [];
144
+ const entriesLength = reader.readUnsignedInt();
145
+ for (let i = 0; i < entriesLength; i++) {
146
+ this.entries.push(PollValue.Unserialize(reader));
147
+ }
148
+
149
+ this.round = reader.readBigInteger();
150
+ this.startTime = reader.readTimestamp();
151
+ this.endTime = reader.readTimestamp();
152
+ this.choicesPerUser = reader.readBigInteger();
153
+ this.totalVotes = reader.readBigInteger();
154
+ }
155
+
156
+ static Unserialize(reader: PBinaryReader): ConsensusPoll {
157
+ let consensusPoll = new ConsensusPoll();
158
+ consensusPoll.UnserializeData(reader);
159
+ return consensusPoll;
160
+ }
161
+ }
162
+
163
+ export class PollPresence implements ISerializable {
164
+ public subject: string;
165
+ public round: BigInt;
166
+
167
+ SerializeData(writer: PBinaryWriter) {
168
+ writer.writeString(this.subject);
169
+ }
170
+
171
+ UnserializeData(reader: PBinaryReader) {
172
+ this.subject = reader.readString();
173
+ this.round = reader.readBigInteger();
174
+ }
175
+
176
+ static Unserialize(reader: PBinaryReader): PollPresence {
177
+ let pollPresence = new PollPresence();
178
+ pollPresence.UnserializeData(reader);
179
+ return pollPresence;
180
+ }
181
+ }
@@ -0,0 +1,324 @@
1
+ import { ISerializable } from "../interfaces";
2
+ import { VMType } from "../vm/VMType";
3
+ import { BinaryReader, BinaryWriter, Encoding } from "csharp-binary-stream";
4
+ import {
5
+ arrayNumberToUint8Array,
6
+ stringToUint8Array,
7
+ uint8ArrayToNumberArray,
8
+ uint8ArrayToString,
9
+ } from "../utils";
10
+ import { TokenTrigger } from "./DomainSettings";
11
+ import { PBinaryReader, PBinaryWriter } from "./Extensions";
12
+
13
+ export class ContractParameter {
14
+ name: string;
15
+ type: VMType;
16
+
17
+ constructor(name: string, type: VMType) {
18
+ this.name = name;
19
+ this.type = type;
20
+ }
21
+ }
22
+
23
+ export class ContractInterface implements ISerializable {
24
+ public static readonly Empty: ContractInterface = new ContractInterface(
25
+ [],
26
+ []
27
+ );
28
+ private _methods = new Map<string, ContractMethod>();
29
+ public Methods = Array.from(this._methods.values());
30
+ public MethodCount = this._methods.size;
31
+
32
+ private _events: ContractEvent[];
33
+ public Events(): ContractEvent[] {
34
+ return this._events;
35
+ }
36
+
37
+ public EventCount() {
38
+ return this._events.length;
39
+ }
40
+
41
+ public newEmpty() {
42
+ this._methods = new Map<string, ContractMethod>();
43
+ this._events = [];
44
+ }
45
+
46
+ public constructor(methods: ContractMethod[], events: ContractEvent[]) {
47
+ for (const entry of methods) {
48
+ this._methods.set(entry.name, entry);
49
+ }
50
+ this._events = events;
51
+ }
52
+
53
+ public get(name: string): ContractMethod | null {
54
+ return this.FindMethod(name);
55
+ }
56
+ public HasMethod(name: string): boolean {
57
+ return this._methods.has(name);
58
+ }
59
+
60
+ public HasTokenTrigger(trigger: TokenTrigger): boolean {
61
+ const strName = trigger.toString();
62
+ const name = strName[0].toLowerCase() + strName.slice(1);
63
+ return this._methods.has(name);
64
+ }
65
+
66
+ public FindMethod(name: string): ContractMethod | null {
67
+ if (this._methods.has(name)) {
68
+ return this._methods.get(name);
69
+ }
70
+ return null;
71
+ }
72
+
73
+ public FindEvent(value: number): ContractEvent | null {
74
+ for (const evt of this._events) {
75
+ if (evt.value === value) {
76
+ return evt;
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+
82
+ public ImplementsEvent(evt: ContractEvent): boolean {
83
+ for (const entry of this.Events()) {
84
+ if (
85
+ entry.name === evt.name &&
86
+ entry.value === evt.value &&
87
+ entry.returnType === evt.returnType
88
+ ) {
89
+ return true;
90
+ }
91
+ }
92
+ return false;
93
+ }
94
+
95
+ public ImplementsMethod(method: ContractMethod): boolean {
96
+ if (!this._methods.has(method.name)) {
97
+ return false;
98
+ }
99
+ const thisMethod = this._methods.get(method.name);
100
+ if (thisMethod.parameters.length !== method.parameters.length) {
101
+ return false;
102
+ }
103
+
104
+ for (let i = 0; i < method.parameters.length; i++) {
105
+ if (thisMethod.parameters[i].type !== method.parameters[i].type) {
106
+ return false;
107
+ }
108
+ }
109
+
110
+ return true;
111
+ }
112
+
113
+ public ImplementsInterface(other: ContractInterface): boolean {
114
+ for (const method of other.Methods) {
115
+ if (!this.ImplementsMethod(method)) {
116
+ return false;
117
+ }
118
+ }
119
+
120
+ for (const evt of other.Events()) {
121
+ if (!this.ImplementsEvent(evt)) {
122
+ return false;
123
+ }
124
+ }
125
+
126
+ return true;
127
+ }
128
+
129
+ public UnserializeData(reader: PBinaryReader): void {
130
+ const len = reader.readByte();
131
+ this._methods.clear();
132
+ for (let i = 0; i < len; i++) {
133
+ const method = ContractMethod.Unserialize(reader);
134
+ this._methods.set(method.name, method);
135
+ }
136
+ const eventLen = reader.readByte();
137
+ this._events = [];
138
+ for (let i = 0; i < eventLen; i++) {
139
+ this._events.push(ContractEvent.Unserialize(reader));
140
+ }
141
+ }
142
+ public SerializeData(writer: PBinaryWriter): void {
143
+ writer.writeByte(this._methods.size);
144
+ for (const [_, value] of this._methods) {
145
+ value.Serialize(writer);
146
+ }
147
+ writer.writeByte(this._events.length);
148
+ for (const entry of this._events) {
149
+ entry.Serialize(writer);
150
+ }
151
+ }
152
+ }
153
+
154
+ export class ContractMethod implements ISerializable {
155
+ public name: string;
156
+ public returnType: VMType;
157
+ public parameters: ContractParameter[];
158
+ public offset: number;
159
+
160
+ SerializeData(writer: PBinaryWriter) {
161
+ this.Serialize(writer);
162
+ }
163
+ UnserializeData(reader: PBinaryReader) {
164
+ return ContractMethod.Unserialize(reader);
165
+ }
166
+
167
+ public constructorOne(
168
+ name: string,
169
+ returnType: VMType,
170
+ labels: Map<string, number>,
171
+ parameters: ContractParameter[]
172
+ ) {
173
+ if (!labels.has(name)) {
174
+ throw new Error(`Missing offset in label map for method ${name}`);
175
+ }
176
+
177
+ const offset = labels.get(name);
178
+
179
+ this.name = name;
180
+ this.offset = offset;
181
+ this.returnType = returnType;
182
+ this.parameters = parameters;
183
+ }
184
+
185
+ constructor(
186
+ name: string,
187
+ returnType: VMType,
188
+ offset: number,
189
+ parameters: ContractParameter[]
190
+ ) {
191
+ this.name = name;
192
+ this.offset = offset;
193
+ this.returnType = returnType;
194
+ this.parameters = parameters;
195
+ }
196
+
197
+ public isProperty(): boolean {
198
+ if (
199
+ this.name.length >= 4 &&
200
+ this.name.startsWith("get") &&
201
+ this.name[3] === this.name[3].toUpperCase()
202
+ ) {
203
+ return true;
204
+ }
205
+
206
+ if (
207
+ this.name.length >= 3 &&
208
+ this.name.startsWith("is") &&
209
+ this.name[2] === this.name[2].toUpperCase()
210
+ ) {
211
+ return true;
212
+ }
213
+
214
+ return false;
215
+ }
216
+
217
+ public isTrigger(): boolean {
218
+ if (
219
+ this.name.length >= 3 &&
220
+ this.name.startsWith("on") &&
221
+ this.name[2] === this.name[2].toUpperCase()
222
+ ) {
223
+ return true;
224
+ }
225
+
226
+ return false;
227
+ }
228
+
229
+ public toString(): string {
230
+ return `${this.name} : ${this.returnType}`;
231
+ }
232
+
233
+ public static fromBytes(bytes: Uint8Array): ContractMethod {
234
+ const stream = new Uint8Array(bytes);
235
+ const reader = new PBinaryReader(stream);
236
+ return ContractMethod.Unserialize(reader);
237
+ }
238
+
239
+ public static Unserialize(reader: PBinaryReader): ContractMethod {
240
+ const name = reader.readString();
241
+ const returnType = reader.readByte() as VMType;
242
+ const offset = reader.readInt();
243
+ const len = reader.readByte();
244
+ const parameters: ContractParameter[] = new Array(len);
245
+ for (let i = 0; i < len; i++) {
246
+ const pName = reader.readString();
247
+ const pVMType = reader.readByte() as VMType;
248
+ parameters[i] = new ContractParameter(pName, pVMType);
249
+ }
250
+
251
+ return new ContractMethod(name, returnType, offset, parameters);
252
+ }
253
+
254
+ public Serialize(writer: PBinaryWriter): void {
255
+ writer.writeString(this.name);
256
+ writer.writeByte(this.returnType);
257
+ writer.writeInt(this.offset);
258
+ writer.writeByte(this.parameters.length);
259
+ this.parameters.forEach((entry) => {
260
+ writer.writeString(entry.name);
261
+ writer.writeByte(entry.type);
262
+ });
263
+ }
264
+
265
+ public toArray(): Uint8Array {
266
+ const stream = new Uint8Array();
267
+ const writer = new PBinaryWriter(stream);
268
+ this.Serialize(writer);
269
+ return stream;
270
+ }
271
+ }
272
+
273
+ export class ContractEvent implements ISerializable {
274
+ public readonly value: number;
275
+ public readonly name: string;
276
+ public readonly returnType: VMType;
277
+ public readonly description: Uint8Array;
278
+
279
+ constructor(
280
+ value: number,
281
+ name: string,
282
+ returnType: VMType,
283
+ description: Uint8Array
284
+ ) {
285
+ this.value = value;
286
+ this.name = name;
287
+ this.returnType = returnType;
288
+ this.description = description;
289
+ }
290
+
291
+ SerializeData(writer: PBinaryWriter) {
292
+ this.Serialize(writer);
293
+ }
294
+
295
+ UnserializeData(reader: PBinaryReader) {
296
+ return ContractEvent.Unserialize(reader);
297
+ }
298
+
299
+ public toString(): string {
300
+ return `${this.name} : ${this.returnType} => ${this.value}`;
301
+ }
302
+
303
+ public static Unserialize(reader: PBinaryReader): ContractEvent {
304
+ const value = reader.readByte();
305
+ const name = reader.readString();
306
+ const returnType = reader.readByte() as VMType;
307
+ const description = reader.readBytes(reader.readByte());
308
+
309
+ return new ContractEvent(
310
+ value,
311
+ name,
312
+ returnType,
313
+ arrayNumberToUint8Array(description)
314
+ );
315
+ }
316
+
317
+ public Serialize(writer: PBinaryWriter): void {
318
+ writer.writeByte(this.value);
319
+ writer.writeString(this.name);
320
+ writer.writeByte(this.returnType);
321
+ writer.writeByte(this.description.length);
322
+ writer.writeBytes(uint8ArrayToNumberArray(this.description));
323
+ }
324
+ }
@@ -0,0 +1,128 @@
1
+ import { Address } from './Address';
2
+ import { Timestamp } from './Timestamp';
3
+
4
+ export enum TriggerResult {
5
+ Failure,
6
+ Missing,
7
+ Success,
8
+ }
9
+
10
+ export enum AccountTrigger {
11
+ OnMint, // address, symbol, amount
12
+ OnBurn, // address, symbol, amount
13
+ OnSend, // address, symbol, amount
14
+ OnReceive, // address, symbol, amount
15
+ OnWitness, // address
16
+ OnUpgrade, // address
17
+ OnMigrate, // from, to
18
+ OnKill, // address
19
+ }
20
+
21
+ export enum TokenTrigger {
22
+ OnMint, // address, symbol, amount
23
+ OnBurn, // address, symbol, amount
24
+ OnSend, // address, symbol, amount
25
+ OnReceive, // address, symbol, amount
26
+ OnInfuse, // address, symbol, amount
27
+ OnUpgrade, // address
28
+ OnSeries, // address
29
+ OnWrite, // address, data
30
+ OnMigrate, // from, to
31
+ OnKill, // address
32
+ }
33
+
34
+ export enum OrganizationTrigger {
35
+ OnAdd, // address
36
+ OnRemove, // address
37
+ OnUpgrade, // address
38
+ }
39
+
40
+ export class StakeReward {
41
+ staker: Address;
42
+ date: Timestamp;
43
+
44
+ constructor(staker: Address, date: Timestamp) {
45
+ this.staker = staker;
46
+ this.date = date;
47
+ }
48
+ }
49
+
50
+ export class DomainSettings {
51
+ public static LatestKnownProtocol = 18;
52
+
53
+ public static Phantasma20Protocol = 7;
54
+ public static Phantasma30Protocol = 8;
55
+
56
+ public static MaxTxPerBlock = 1024;
57
+
58
+ public static MaxOracleEntriesPerBlock = 5120;
59
+
60
+ public static MaxEventsPerBlock = 2048;
61
+
62
+ public static MaxEventsPerTx = 8096;
63
+
64
+ public static MaxTriggerLoop = 5;
65
+
66
+ public static MAX_TOKEN_DECIMALS = 18;
67
+
68
+ public static DefaultMinimumGasFee = 100000;
69
+ public static InitialValidatorCount = 4;
70
+
71
+ public static FuelTokenSymbol = 'KCAL';
72
+ public static FuelTokenName = 'Phantasma Energy';
73
+ public static FuelTokenDecimals = 10;
74
+
75
+ public static NexusMainnet = 'mainnet';
76
+ public static NexusTestnet = 'testnet';
77
+
78
+ public static StakingTokenSymbol = 'SOUL';
79
+ public static StakingTokenName = 'Phantasma Stake';
80
+ public static StakingTokenDecimals = 8;
81
+
82
+ public static FiatTokenSymbol = 'USD';
83
+ public static FiatTokenName = 'Dollars';
84
+ public static FiatTokenDecimals = 8;
85
+
86
+ public static RewardTokenSymbol = 'CROWN';
87
+ public static RewardTokenName = 'Phantasma Crown';
88
+
89
+ public static LiquidityTokenSymbol = 'LP';
90
+ public static LiquidityTokenName = 'Phantasma Liquidity';
91
+ public static LiquidityTokenDecimals = 8;
92
+
93
+ public static FuelPerContractDeployTag = 'nexus.contract.cost';
94
+ public static FuelPerTokenDeployTag = 'nexus.token.cost';
95
+ public static FuelPerOrganizationDeployTag = 'nexus.organization.cost';
96
+
97
+ public static SystemTokens = [
98
+ DomainSettings.FuelTokenSymbol,
99
+ DomainSettings.StakingTokenSymbol,
100
+ DomainSettings.FiatTokenSymbol,
101
+ DomainSettings.RewardTokenSymbol,
102
+ DomainSettings.LiquidityTokenSymbol,
103
+ ];
104
+
105
+ public static RootChainName = 'main';
106
+
107
+ public static ValidatorsOrganizationName = 'validators';
108
+ public static MastersOrganizationName = 'masters';
109
+ public static StakersOrganizationName = 'stakers';
110
+
111
+ public static PhantomForceOrganizationName = 'phantom_force';
112
+
113
+ //public static PlatformSupply = UnitConversion.ToBigInteger(100000000, FuelTokenDecimals);
114
+ public static PlatformName = 'phantasma';
115
+
116
+ public static ArchiveMinSize = 64;
117
+ public static ArchiveMaxSize = 104857600;
118
+ //public static ArchiveBlockSize = MerkleTree.ChunkSize;
119
+
120
+ public static InfusionName = 'infusion';
121
+ //public static InfusionAddress = SmartContract.GetAddressFromContractName(InfusionName);
122
+
123
+ public static NameMaxLength = 255;
124
+ public static UrlMaxLength = 2048;
125
+ public static ArgsMax = 64;
126
+ public static AddressMaxSize = 34;
127
+ public static ScriptMaxSize = 32767;
128
+ }
@@ -0,0 +1,78 @@
1
+ import { IKeyPair } from "../interfaces/IKeyPair";
2
+ import { Signature, SignatureKind } from "../interfaces/Signature";
3
+ import { Address } from "./Address";
4
+ import pkg from 'elliptic';
5
+
6
+ import {
7
+ stringToUint8Array,
8
+ uint8ArrayToHex,
9
+ uint8ArrayToString,
10
+ } from "../utils";
11
+ import { BinaryReader, BinaryWriter, Encoding } from "csharp-binary-stream";
12
+ import { PBinaryWriter, PBinaryReader } from "./Extensions";
13
+ const { eddsa } = pkg;
14
+ const ed25519 = new eddsa("ed25519");
15
+
16
+ export class Ed25519Signature implements Signature {
17
+ public Bytes: Uint8Array;
18
+ public Kind: SignatureKind = SignatureKind.Ed25519;
19
+
20
+ constructor(bytes?: Uint8Array) {
21
+ this.Bytes = bytes;
22
+ }
23
+
24
+ Verify(message: Uint8Array, address: Address): boolean {
25
+ return this.VerifyMultiple(message, [address]);
26
+ }
27
+
28
+ public VerifyMultiple(message: Uint8Array, addresses: Address[]): boolean {
29
+ for (const address of addresses) {
30
+ if (!address.IsUser) {
31
+ continue;
32
+ }
33
+ const pubKey = address.ToByteArray().slice(2);
34
+ if (
35
+ ed25519.verify(
36
+ uint8ArrayToString(this.Bytes),
37
+ uint8ArrayToString(message),
38
+ uint8ArrayToString(pubKey)
39
+ )
40
+ ) {
41
+ return true;
42
+ }
43
+ }
44
+ return false;
45
+ }
46
+
47
+ public SerializeData(writer: PBinaryWriter) {
48
+ //writer.writeString(uint8ArrayToString(this.Bytes));
49
+ writer.writeByteArray(this.Bytes);
50
+ }
51
+
52
+ public UnserializeData(reader: PBinaryReader) {
53
+ this.Bytes = stringToUint8Array(reader.readString());
54
+ }
55
+
56
+ ToByteArray(): Uint8Array {
57
+ const stream = new Uint8Array(64);
58
+ const writer = new PBinaryWriter(stream);
59
+ this.SerializeData(writer);
60
+ return new Uint8Array(stream);
61
+ }
62
+
63
+ public static Generate(
64
+ keypair: IKeyPair,
65
+ message: Uint8Array
66
+ ): Ed25519Signature {
67
+ const msgHashHex = Buffer.from(uint8ArrayToHex(message), "hex");
68
+ //const msgHashHex = uint8ArrayToString(message);
69
+ const privateKeyBuffer = Buffer.from(
70
+ uint8ArrayToHex(keypair.PrivateKey),
71
+ "hex"
72
+ );
73
+ //const privateKeyBuffer = uint8ArrayToString(keypair.PrivateKey);
74
+
75
+ const sign = ed25519.sign(msgHashHex, privateKeyBuffer);
76
+ return new Ed25519Signature(sign.toBytes());
77
+ }
78
+ }