@aeternity/aepp-sdk 11.0.1 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
package/src/Node.ts ADDED
@@ -0,0 +1,167 @@
1
+ import BigNumber from 'bignumber.js'
2
+ import { OperationArguments, OperationSpec } from '@azure/core-client'
3
+ import {
4
+ genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,
5
+ genVersionCheckPolicy
6
+ } from './utils/autorest'
7
+ import { Node as NodeApi, NodeOptionalParams, ErrorModel } from './apis/node/'
8
+ import { mapObject } from './utils/other'
9
+ import { EncodedData } from './utils/encoder'
10
+ import { MissingParamError } from './utils/errors'
11
+
12
+ /**
13
+ * Obtain networkId from account or node
14
+ */
15
+ export async function getNetworkId ({ networkId }: { networkId?: string } = {}): Promise<string> {
16
+ const res = networkId ?? this.networkId ?? (await this.api?.getStatus()).networkId
17
+ if (res != null) return res
18
+ throw new MissingParamError('networkId is not provided')
19
+ }
20
+
21
+ const bigIntPropertyNames = [
22
+ 'balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount',
23
+ 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal',
24
+ 'responderAmountFinal', 'gasPrice', 'deposit'
25
+ ] as const
26
+
27
+ const numberPropertyNames = [
28
+ 'time', 'gas', 'gasUsed', 'nameSalt',
29
+ 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl',
30
+ 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight',
31
+ 'version', 'solutions'
32
+ ] as const
33
+
34
+ type BigIntPropertyNames = typeof bigIntPropertyNames[number]
35
+ type NumberPropertyNames = typeof numberPropertyNames[number]
36
+ type PreserveOptional<NewType, OrigType> =
37
+ OrigType extends undefined ? NewType | undefined : NewType
38
+ export type TransformNodeType<Type> =
39
+ Type extends (...args: infer Args) => infer Ret
40
+ ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret>
41
+ : Type extends [infer Item, ...infer Rest]
42
+ ? [TransformNodeType<Item>, ...TransformNodeType<Rest>]
43
+ : Type extends Array<infer Item>
44
+ ? Array<TransformNodeType<Item>>
45
+ : Type extends Promise<infer T>
46
+ ? Promise<TransformNodeType<T>>
47
+ : Type extends { [P in any]: any }
48
+ ? {
49
+ [Property in keyof Type]:
50
+ Property extends BigIntPropertyNames
51
+ ? PreserveOptional<bigint, Type[Property]>
52
+ : Property extends NumberPropertyNames
53
+ ? PreserveOptional<number, Type[Property]>
54
+ : Property extends 'txHash'
55
+ ? PreserveOptional<EncodedData<'th'>, Type[Property]>
56
+ : TransformNodeType<Type[Property]>
57
+ }
58
+ : Type
59
+ type TransformedNode = new (...args: ConstructorParameters<typeof NodeApi>) => {
60
+ [Name in keyof InstanceType<typeof NodeApi>]: TransformNodeType<NodeApi[Name]>
61
+ }
62
+
63
+ export interface NodeInfo {
64
+ url: string
65
+ nodeNetworkId: string
66
+ version: string
67
+ consensusProtocolVersion: number
68
+ }
69
+
70
+ export default class Node extends (NodeApi as unknown as TransformedNode) {
71
+ url: string
72
+
73
+ /**
74
+ * @param url - Url for node API
75
+ * @param options - Options
76
+ * @param options.ignoreVersion - Don't check node version
77
+ */
78
+ constructor (
79
+ url: string,
80
+ { ignoreVersion = false, ...options }: NodeOptionalParams & { ignoreVersion?: boolean } = {}
81
+ ) {
82
+ // eslint-disable-next-line constructor-super
83
+ super(url, {
84
+ allowInsecureConnection: true,
85
+ additionalPolicies: [
86
+ genRequestQueuesPolicy(),
87
+ genCombineGetRequestsPolicy(),
88
+ genErrorFormatterPolicy((body: ErrorModel) => ` ${body.reason}`)
89
+ ],
90
+ ...options
91
+ })
92
+ this.url = url
93
+ if (!ignoreVersion) {
94
+ const versionPromise = this.getStatus().then(({ nodeVersion }) => nodeVersion)
95
+ this.pipeline.addPolicy(genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'))
96
+ }
97
+ this.intAsString = true
98
+ }
99
+
100
+ async getNodeInfo (): Promise<NodeInfo> {
101
+ const {
102
+ nodeVersion: version,
103
+ networkId: nodeNetworkId,
104
+ protocols,
105
+ topBlockHeight
106
+ } = await this.getStatus()
107
+ const consensusProtocolVersion = protocols
108
+ .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)
109
+ .reduce(
110
+ (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,
111
+ { effectiveAtHeight: -1, version: 0 }
112
+ )
113
+ .version
114
+ return {
115
+ url: this.url,
116
+ nodeNetworkId,
117
+ version,
118
+ consensusProtocolVersion
119
+ }
120
+ }
121
+
122
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/27689
123
+ async sendOperationRequest (
124
+ operationArguments: OperationArguments, operationSpec: OperationSpec
125
+ ): Promise<any> {
126
+ const args = mapObject(
127
+ operationArguments,
128
+ ([key, value]) => [key, this.#encodeArg(value)]
129
+ ) as OperationArguments
130
+ return this.#decodeRes(await super.sendOperationRequest(args, operationSpec))
131
+ }
132
+
133
+ #mapData (
134
+ data: any, transform: {
135
+ bigInt: (v: any) => any
136
+ number: (v: any) => any
137
+ }
138
+ ): unknown {
139
+ if (Array.isArray(data)) return data.map(d => this.#mapData(d, transform))
140
+ if (data != null && typeof data === 'object') {
141
+ return mapObject(data, ([key, value]) => {
142
+ if (value == null) return [key, value]
143
+ if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)]
144
+ if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)]
145
+ return [key, this.#mapData(value, transform)]
146
+ })
147
+ }
148
+ return data
149
+ }
150
+
151
+ #encodeArg (data: any): any {
152
+ return this.#mapData(data, {
153
+ bigInt: value => {
154
+ if (value instanceof BigNumber) return value.toFixed()
155
+ return value.toString()
156
+ },
157
+ number: value => value.toString()
158
+ })
159
+ }
160
+
161
+ #decodeRes (data: any): any {
162
+ return this.#mapData(data, {
163
+ bigInt: value => BigInt(value),
164
+ number: value => +value
165
+ })
166
+ }
167
+ }
@@ -0,0 +1,114 @@
1
+ /*
2
+ * ISC License (ISC)
3
+ * Copyright (c) 2022 aeternity developers
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ * PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+ import { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'
18
+ import { buildTx } from '../tx/builder'
19
+ import { decode, EncodedData } from '../utils/encoder'
20
+ import { TX_TYPE } from '../tx/builder/schema'
21
+ import { getNetworkId } from '../Node'
22
+ import { concatBuffers } from '../utils/other'
23
+
24
+ /**
25
+ * Check is provided object looks like an instance of AccountBase
26
+ * @param acc - Object to check
27
+ */
28
+ export const isAccountBase = (acc: AccountBase | any): boolean =>
29
+ !['sign', 'address', 'signTransaction', 'signMessage'].some(f => typeof acc[f] !== 'function')
30
+
31
+ /**
32
+ * Account is one of the three basic building blocks of an
33
+ * {@link AeSdk} and provides access to a signing key pair.
34
+ */
35
+ export default abstract class AccountBase {
36
+ networkId?: string
37
+
38
+ /**
39
+ * @param options - Options
40
+ * @param options.networkId - Using for signing transactions
41
+ */
42
+ constructor ({ networkId }: { networkId?: string } = {}) {
43
+ this.networkId ??= networkId
44
+ }
45
+
46
+ /**
47
+ * Sign encoded transaction
48
+ * @param tx - Transaction to sign
49
+ * @param opt - Options
50
+ * @param opt.innerTx - Sign as inner transaction for PayingFor
51
+ * @returns Signed transaction
52
+ */
53
+ async signTransaction (
54
+ tx: EncodedData<'tx'>,
55
+ { innerTx, networkId, ...options }: { innerTx?: boolean, networkId?: string } = {}
56
+ ): Promise<EncodedData<'tx'>> {
57
+ const prefixes = [await this.getNetworkId({ networkId })]
58
+ if (innerTx === true) prefixes.push('inner_tx')
59
+ const rlpBinaryTx = decode(tx)
60
+ const txWithNetworkId = concatBuffers([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])
61
+
62
+ const signatures = [await this.sign(txWithNetworkId, options)]
63
+ return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx
64
+ }
65
+
66
+ /**
67
+ * Get network Id
68
+ * @returns Network Id
69
+ */
70
+ readonly getNetworkId = getNetworkId
71
+
72
+ /**
73
+ * Sign message
74
+ * @param message - Message to sign
75
+ * @param opt - Options
76
+ * @returns Signature as hex string of Uint8Array
77
+ */
78
+ async signMessage (
79
+ message: string, { returnHex = false, ...options }: { returnHex?: boolean } = {}
80
+ ): Promise<string | Uint8Array> {
81
+ const sig = await this.sign(messageToHash(message), options)
82
+ return returnHex ? Buffer.from(sig).toString('hex') : sig
83
+ }
84
+
85
+ /**
86
+ * Verify message
87
+ * @param message - Message to verify
88
+ * @param signature - Signature
89
+ * @param options - Options
90
+ */
91
+ async verifyMessage (
92
+ message: string, signature: string | Uint8Array, options?: object
93
+ ): Promise<boolean> {
94
+ return verifyMessageCrypto(
95
+ message,
96
+ typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,
97
+ decode(await this.address(options))
98
+ )
99
+ }
100
+
101
+ /**
102
+ * Sign data blob
103
+ * @param data - Data blob to sign
104
+ * @param options - Options
105
+ * @returns Signed data blob
106
+ */
107
+ abstract sign (data: string | Uint8Array, options?: any): Promise<Uint8Array>
108
+
109
+ /**
110
+ * Obtain account address
111
+ * @returns Public account address
112
+ */
113
+ abstract address (opt?: object): Promise<EncodedData<'ak'>>
114
+ }
@@ -0,0 +1,83 @@
1
+ /*
2
+ * ISC License (ISC)
3
+ * Copyright (c) 2018 aeternity developers
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ * PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+ import AccountBase from './Base'
18
+ import { sign, isValidKeypair } from '../utils/crypto'
19
+ import { isHex } from '../utils/string'
20
+ import { decode } from '../tx/builder/helpers'
21
+ import { InvalidKeypairError, MissingParamError } from '../utils/errors'
22
+ import { EncodedData } from '../utils/encoder'
23
+
24
+ const secrets = new WeakMap()
25
+
26
+ export interface Keypair {
27
+ publicKey: EncodedData<'ak'>
28
+ secretKey: string | Uint8Array
29
+ }
30
+
31
+ /**
32
+ * In-memory account class
33
+ */
34
+ export default class AccountMemory extends AccountBase {
35
+ isGa: boolean
36
+
37
+ /**
38
+ * @param options - Options
39
+ * @param options.keypair - Key pair to use
40
+ * @param options.keypair.publicKey - Public key
41
+ * @param options.keypair.secretKey - Private key
42
+ * @param options.gaId - Address of generalized account
43
+ */
44
+ constructor (
45
+ { keypair, gaId, ...options }: { keypair?: Keypair, gaId?: EncodedData<'ak'> } & ConstructorParameters<typeof AccountBase>[0]
46
+ ) {
47
+ super(options)
48
+
49
+ this.isGa = gaId != null
50
+ if (this.isGa && gaId != null) {
51
+ decode(gaId)
52
+ secrets.set(this, { publicKey: gaId })
53
+ return
54
+ }
55
+
56
+ if (keypair == null) throw new MissingParamError('Either gaId or keypair is required')
57
+
58
+ if (
59
+ !Buffer.isBuffer(keypair.secretKey) &&
60
+ typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey)
61
+ ) throw new InvalidKeypairError('Secret key must be hex string or Buffer')
62
+ const secretKey = typeof keypair.secretKey === 'string'
63
+ ? Buffer.from(keypair.secretKey, 'hex')
64
+ : keypair.secretKey
65
+ if (!isValidKeypair(secretKey, decode(keypair.publicKey))) {
66
+ throw new InvalidKeypairError('Invalid Key Pair')
67
+ }
68
+
69
+ secrets.set(this, {
70
+ secretKey,
71
+ publicKey: keypair.publicKey
72
+ })
73
+ }
74
+
75
+ async sign (data: string | Uint8Array): Promise<Uint8Array> {
76
+ if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair')
77
+ return sign(data, secrets.get(this).secretKey)
78
+ }
79
+
80
+ async address (): Promise<EncodedData<'ak'>> {
81
+ return secrets.get(this).publicKey
82
+ }
83
+ }
@@ -0,0 +1,67 @@
1
+ import AccountBase from './Base'
2
+ import { METHODS } from '../aepp-wallet-communication/schema'
3
+ import { NotImplementedError } from '../utils/errors'
4
+ import { EncodedData } from '../utils/encoder'
5
+
6
+ /**
7
+ * Account provided by wallet
8
+ * @param params - Params
9
+ * @param params.rpcClient - RpcClient instance
10
+ * @param params.address - RPC account address
11
+ * @returns AccountRpc instance
12
+ */
13
+ export default class AccountRpc extends AccountBase {
14
+ _rpcClient: any
15
+ _address: EncodedData<'ak'>
16
+
17
+ constructor (
18
+ { rpcClient, address, ...options }:
19
+ { rpcClient: any, address: EncodedData<'ak'> } & ConstructorParameters<typeof AccountBase>[0]
20
+ ) {
21
+ super(options)
22
+ this._rpcClient = rpcClient
23
+ this._address = address
24
+ }
25
+
26
+ async sign (data: string | Uint8Array, options?: any): Promise<Uint8Array> {
27
+ throw new NotImplementedError('RAW signing using wallet')
28
+ }
29
+
30
+ async address (): Promise<EncodedData<'ak'>> {
31
+ return this._address
32
+ }
33
+
34
+ /**
35
+ * @returns Signed transaction
36
+ */
37
+ async signTransaction (
38
+ tx: EncodedData<'tx'>,
39
+ { innerTx, networkId }: Parameters<AccountBase['signTransaction']>[1] = {}
40
+ ): Promise<EncodedData<'tx'>> {
41
+ if (innerTx != null) throw new NotImplementedError('innerTx option in AccountRpc')
42
+ const res = await this._rpcClient.request(METHODS.sign, {
43
+ onAccount: this._address,
44
+ tx,
45
+ returnSigned: true,
46
+ /**
47
+ * @deprecated Wallet provided networkId will be used (current network)
48
+ * required to maintain backward compatibility with wallets using SDK v11.0.1 and below
49
+ * @see {@link https://github.com/aeternity/aepp-sdk-js/commit/153fd89a52c4eab39fcd659b356b36d32129c1ba}
50
+ */
51
+ networkId
52
+ })
53
+ return res.signedTransaction
54
+ }
55
+
56
+ /**
57
+ * @returns Signed message
58
+ */
59
+ async signMessage (
60
+ message: string, { returnHex = false }: Parameters<AccountBase['signMessage']>[1] = {}
61
+ ): Promise<string | Uint8Array> {
62
+ const { signature } = await this._rpcClient.request(
63
+ METHODS.signMessage, { onAccount: this._address, message }
64
+ )
65
+ return returnHex ? signature : Buffer.from(signature, 'hex')
66
+ }
67
+ }