@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
@@ -0,0 +1,322 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+ import { v4 as uuid } from '@aeternity/uuid';
3
+ import AeSdk from "./AeSdk.mjs";
4
+ import verifyTransaction from "./tx/validator.mjs";
5
+ import RpcClient from "./aepp-wallet-communication/rpc/RpcClient.mjs";
6
+ import { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, RpcBroadcastError, RpcInvalidTransactionError, RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError } from "./aepp-wallet-communication/schema.mjs";
7
+ import { UnknownRpcClientError } from "./utils/errors.mjs";
8
+ import { RPC_VERSION } from "./aepp-wallet-communication/rpc/types.mjs";
9
+ import jsonBig from "./utils/json-big.mjs";
10
+
11
+ /**
12
+ * Contain functionality for aepp interaction and managing multiple aepps
13
+ */
14
+ export default class AeSdkWallet extends AeSdk {
15
+ /**
16
+ * @param options - Options
17
+ * @param options.name - Wallet name
18
+ * @param options.id - Wallet id
19
+ * @param options.type - Wallet type
20
+ * @param options.onConnection - Call-back function for incoming AEPP connection
21
+ * @param options.onSubscription - Call-back function for incoming AEPP account subscription
22
+ * @param options.onSign - Call-back function for incoming AEPP sign request
23
+ * @param options.onAskAccounts - Call-back function for incoming AEPP get address request
24
+ * @param options.onMessageSign - Call-back function for incoming AEPP sign message request
25
+ * @param options.onDisconnect - Call-back function for disconnect event
26
+ */
27
+ constructor(_ref) {
28
+ let {
29
+ name,
30
+ id,
31
+ type,
32
+ onConnection,
33
+ onSubscription,
34
+ onSign,
35
+ onDisconnect,
36
+ onAskAccounts,
37
+ onMessageSign,
38
+ ...options
39
+ } = _ref;
40
+ super(options);
41
+ this.onConnection = onConnection;
42
+ this.onSubscription = onSubscription;
43
+ this.onSign = onSign;
44
+ this.onDisconnect = onDisconnect;
45
+ this.onAskAccounts = onAskAccounts;
46
+ this.onMessageSign = onMessageSign;
47
+ this._clients = new Map();
48
+ this.name = name;
49
+ this.id = id;
50
+ this._type = type;
51
+ }
52
+
53
+ _pushAccountsToApps() {
54
+ Array.from(this._clients.keys()).filter(clientId => this._isRpcClientSubscribed(clientId)).map(clientId => this._getClient(clientId).rpc).forEach(client => client.notify(METHODS.updateAddress, this.getAccounts()));
55
+ }
56
+
57
+ selectAccount(address) {
58
+ super.selectAccount(address);
59
+
60
+ this._pushAccountsToApps();
61
+ }
62
+
63
+ async addAccount(account, options) {
64
+ await super.addAccount(account, options);
65
+
66
+ this._pushAccountsToApps();
67
+ }
68
+
69
+ _getNode() {
70
+ this.ensureNodeConnected();
71
+ return {
72
+ node: {
73
+ url: this.api.url,
74
+ name: this.selectedNodeName
75
+ }
76
+ };
77
+ }
78
+
79
+ async selectNode(name) {
80
+ super.selectNode(name);
81
+ const networkId = await this.getNetworkId();
82
+ Array.from(this._clients.keys()).filter(clientId => this._isRpcClientConnected(clientId)).map(clientId => this._getClient(clientId)).forEach(client => {
83
+ client.rpc.notify(METHODS.updateNetwork, {
84
+ networkId,
85
+ ...(client.connectNode && this._getNode())
86
+ });
87
+ });
88
+ }
89
+
90
+ _getClient(clientId) {
91
+ const client = this._clients.get(clientId);
92
+
93
+ if (client == null) throw new UnknownRpcClientError(clientId);
94
+ return client;
95
+ }
96
+
97
+ _isRpcClientSubscribed(clientId) {
98
+ return this._isRpcClientConnected(clientId) && this._getClient(clientId).addressSubscription.size !== 0;
99
+ }
100
+
101
+ _isRpcClientConnected(clientId) {
102
+ return RPC_STATUS.CONNECTED === this._getClient(clientId).status && this._getClient(clientId).rpc.connection.isConnected();
103
+ }
104
+
105
+ _disconnectRpcClient(clientId) {
106
+ const client = this._getClient(clientId);
107
+
108
+ client.rpc.connection.disconnect();
109
+ client.status = RPC_STATUS.DISCONNECTED;
110
+ client.addressSubscription = new Set();
111
+ }
112
+ /**
113
+ * Remove specific RpcClient by ID
114
+ * @param id - Client ID
115
+ */
116
+
117
+
118
+ removeRpcClient(id) {
119
+ this._disconnectRpcClient(id);
120
+
121
+ this._clients.delete(id);
122
+ }
123
+ /**
124
+ * Add new client by AEPP connection
125
+ * @param clientConnection - AEPP connection object
126
+ * @returns Client ID
127
+ */
128
+
129
+
130
+ addRpcClient(clientConnection) {
131
+ // @TODO detect if aepp has some history based on origin????
132
+ // if yes use this instance for connection
133
+ const id = uuid();
134
+ let disconnectParams;
135
+ const client = {
136
+ id,
137
+ status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,
138
+ addressSubscription: new Set(),
139
+ connectNode: false,
140
+ rpc: new RpcClient(clientConnection, () => {
141
+ this._clients.delete(id);
142
+
143
+ this.onDisconnect(id, disconnectParams); // also related info
144
+ }, {
145
+ [METHODS.closeConnection]: params => {
146
+ disconnectParams = params;
147
+
148
+ this._disconnectRpcClient(id);
149
+ },
150
+ // Store client info and prepare two fn for each client `connect` and `denyConnection`
151
+ // which automatically prepare and send response for that client
152
+ [METHODS.connect]: async (_ref2, origin) => {
153
+ let {
154
+ name,
155
+ version,
156
+ icons,
157
+ connectNode
158
+ } = _ref2;
159
+ if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();
160
+ await this.onConnection(id, {
161
+ name,
162
+ icons,
163
+ connectNode
164
+ }, origin);
165
+ client.status = RPC_STATUS.CONNECTED;
166
+ client.connectNode = connectNode;
167
+ return { ...(await this.getWalletInfo()),
168
+ ...(connectNode && this._getNode())
169
+ };
170
+ },
171
+ [METHODS.subscribeAddress]: async (_ref3, origin) => {
172
+ let {
173
+ type,
174
+ value
175
+ } = _ref3;
176
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
177
+ await this.onSubscription(id, {
178
+ type,
179
+ value
180
+ }, origin);
181
+
182
+ switch (type) {
183
+ case SUBSCRIPTION_TYPES.subscribe:
184
+ client.addressSubscription.add(value);
185
+ break;
186
+
187
+ case SUBSCRIPTION_TYPES.unsubscribe:
188
+ client.addressSubscription.delete(value);
189
+ break;
190
+ }
191
+
192
+ return {
193
+ subscription: Array.from(client.addressSubscription),
194
+ address: this.getAccounts()
195
+ };
196
+ },
197
+ [METHODS.address]: async (params, origin) => {
198
+ if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError();
199
+ await this.onAskAccounts(id, params, origin);
200
+ return this.addresses();
201
+ },
202
+ [METHODS.sign]: async (_ref4, origin) => {
203
+ var _onAccount, _context, _overrides$onAccount, _overrides$tx;
204
+
205
+ let {
206
+ tx,
207
+ onAccount,
208
+ returnSigned
209
+ } = _ref4;
210
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
211
+ (_onAccount = onAccount) !== null && _onAccount !== void 0 ? _onAccount : onAccount = await this.address();
212
+
213
+ if (!_includesInstanceProperty(_context = this.addresses()).call(_context, onAccount)) {
214
+ throw new RpcPermissionDenyError(onAccount);
215
+ }
216
+
217
+ const overrides = await this.onSign(id, {
218
+ tx,
219
+ returnSigned,
220
+ onAccount
221
+ }, origin);
222
+ onAccount = (_overrides$onAccount = overrides === null || overrides === void 0 ? void 0 : overrides.onAccount) !== null && _overrides$onAccount !== void 0 ? _overrides$onAccount : onAccount;
223
+ tx = (_overrides$tx = overrides === null || overrides === void 0 ? void 0 : overrides.tx) !== null && _overrides$tx !== void 0 ? _overrides$tx : tx;
224
+
225
+ if (returnSigned) {
226
+ return {
227
+ signedTransaction: await this.signTransaction(tx, {
228
+ onAccount
229
+ })
230
+ };
231
+ }
232
+
233
+ try {
234
+ return jsonBig.parse(jsonBig.stringify({
235
+ transactionHash: await this.send(tx, {
236
+ onAccount,
237
+ verify: false
238
+ })
239
+ }));
240
+ } catch (error) {
241
+ const validation = await verifyTransaction(tx, this.api);
242
+ if (validation.length > 0) throw new RpcInvalidTransactionError(validation);
243
+ throw new RpcBroadcastError(error.message);
244
+ }
245
+ },
246
+ [METHODS.signMessage]: async (_ref5, origin) => {
247
+ var _onAccount2, _context2, _overrides$onAccount2;
248
+
249
+ let {
250
+ message,
251
+ onAccount
252
+ } = _ref5;
253
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
254
+ (_onAccount2 = onAccount) !== null && _onAccount2 !== void 0 ? _onAccount2 : onAccount = await this.address();
255
+
256
+ if (!_includesInstanceProperty(_context2 = this.addresses()).call(_context2, onAccount)) {
257
+ throw new RpcPermissionDenyError(onAccount);
258
+ }
259
+
260
+ const overrides = await this.onMessageSign(id, {
261
+ message,
262
+ onAccount
263
+ }, origin);
264
+ onAccount = (_overrides$onAccount2 = overrides === null || overrides === void 0 ? void 0 : overrides.onAccount) !== null && _overrides$onAccount2 !== void 0 ? _overrides$onAccount2 : onAccount;
265
+ return {
266
+ // TODO: fix signMessage return type
267
+ signature: await this.signMessage(message, {
268
+ onAccount,
269
+ returnHex: true
270
+ })
271
+ };
272
+ }
273
+ })
274
+ };
275
+
276
+ this._clients.set(id, client);
277
+
278
+ return id;
279
+ }
280
+ /**
281
+ * Send shareWalletInfo message to notify AEPP about wallet
282
+ * @param clientId - ID of RPC client send message to
283
+ */
284
+
285
+
286
+ async shareWalletInfo(clientId) {
287
+ this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo());
288
+ }
289
+ /**
290
+ * Get Wallet info object
291
+ * @returns Object with wallet information
292
+ */
293
+
294
+
295
+ async getWalletInfo() {
296
+ return {
297
+ id: this.id,
298
+ name: this.name,
299
+ networkId: await this.getNetworkId(),
300
+ origin: window.location.origin,
301
+ type: this._type
302
+ };
303
+ }
304
+ /**
305
+ * Get Wallet accounts
306
+ * @returns Object with accounts information (\{ connected: Object, current: Object \})
307
+ */
308
+
309
+
310
+ getAccounts() {
311
+ return {
312
+ current: this.selectedAddress != null ? {
313
+ [this.selectedAddress]: {}
314
+ } : {},
315
+ connected: this.addresses().filter(a => a !== this.selectedAddress).reduce((acc, a) => ({ ...acc,
316
+ [a]: {}
317
+ }), {})
318
+ };
319
+ }
320
+
321
+ }
322
+ //# sourceMappingURL=AeSdkWallet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AeSdkWallet.mjs","names":["v4","uuid","AeSdk","verifyTransaction","RpcClient","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","RpcBroadcastError","RpcInvalidTransactionError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcUnsupportedProtocolError","UnknownRpcClientError","RPC_VERSION","jsonBig","AeSdkWallet","constructor","name","id","type","onConnection","onSubscription","onSign","onDisconnect","onAskAccounts","onMessageSign","options","_clients","Map","_type","_pushAccountsToApps","Array","from","keys","filter","clientId","_isRpcClientSubscribed","map","_getClient","rpc","forEach","client","notify","updateAddress","getAccounts","selectAccount","address","addAccount","account","_getNode","ensureNodeConnected","node","url","api","selectedNodeName","selectNode","networkId","getNetworkId","_isRpcClientConnected","updateNetwork","connectNode","get","addressSubscription","size","CONNECTED","status","connection","isConnected","_disconnectRpcClient","disconnect","DISCONNECTED","Set","removeRpcClient","delete","addRpcClient","clientConnection","disconnectParams","WAITING_FOR_CONNECTION_REQUEST","closeConnection","params","connect","origin","version","icons","getWalletInfo","subscribeAddress","value","subscribe","add","unsubscribe","subscription","addresses","sign","tx","onAccount","returnSigned","overrides","signedTransaction","signTransaction","parse","stringify","transactionHash","send","verify","error","validation","length","message","signMessage","signature","returnHex","set","shareWalletInfo","readyToConnect","window","location","current","selectedAddress","connected","a","reduce","acc"],"sources":["../src/AeSdkWallet.ts"],"sourcesContent":["import { v4 as uuid } from '@aeternity/uuid'\nimport AeSdk from './AeSdk'\nimport { Account } from './AeSdkBase'\nimport verifyTransaction from './tx/validator'\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient'\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcBroadcastError, RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError\n} from './aepp-wallet-communication/schema'\nimport { UnknownRpcClientError } from './utils/errors'\nimport AccountBase from './account/Base'\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser'\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo\n} from './aepp-wallet-communication/rpc/types'\nimport { EncodedData } from './utils/encoder'\nimport jsonBig from './utils/json-big'\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void\n\ntype OnSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.sign]>[0], origin: string\n) => Promise<{ tx?: EncodedData<'tx'>, onAccount?: Account } | undefined> | Promise<void>\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void\n\ntype OnMessageSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.signMessage]>[0], origin: string\n) => Promise<{ onAccount?: Account } | undefined> | Promise<void>\n\ninterface RpcClientsInfo {\n id: string\n status: RPC_STATUS\n connectNode: boolean\n addressSubscription: Set<'connected' | 'current'>\n rpc: RpcClientWallet\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string\n _type: WALLET_TYPE\n name: string\n _clients: Map<string, RpcClientsInfo>\n onConnection: OnConnection\n onSubscription: OnSubscription\n onSign: OnSign\n onDisconnect: OnDisconnect\n onAskAccounts: OnAskAccounts\n onMessageSign: OnMessageSign\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onSign - Call-back function for incoming AEPP sign request\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onMessageSign - Call-back function for incoming AEPP sign message request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor ({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n ...options\n }: {\n id: string\n type: WALLET_TYPE\n name: string\n onConnection: OnConnection\n onSubscription: OnSubscription\n onSign: OnSign\n onDisconnect: OnDisconnect\n onAskAccounts: OnAskAccounts\n onMessageSign: OnMessageSign\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options)\n this.onConnection = onConnection\n this.onSubscription = onSubscription\n this.onSign = onSign\n this.onDisconnect = onDisconnect\n this.onAskAccounts = onAskAccounts\n this.onMessageSign = onMessageSign\n this._clients = new Map()\n this.name = name\n this.id = id\n this._type = type\n }\n\n _pushAccountsToApps (): void {\n Array.from(this._clients.keys())\n .filter(clientId => this._isRpcClientSubscribed(clientId))\n .map(clientId => this._getClient(clientId).rpc)\n .forEach(client => client.notify(METHODS.updateAddress, this.getAccounts()))\n }\n\n selectAccount (address: EncodedData<'ak'>): void {\n super.selectAccount(address)\n this._pushAccountsToApps()\n }\n\n async addAccount (\n account: AccountBase,\n options?: Parameters<AeSdk['addAccount']>[1]\n ): Promise<void> {\n await super.addAccount(account, options)\n this._pushAccountsToApps()\n }\n\n _getNode (): { node: Network['node'] } {\n this.ensureNodeConnected()\n return { node: { url: this.api.url, name: this.selectedNodeName } }\n }\n\n async selectNode (name: string): Promise<void> {\n super.selectNode(name)\n const networkId = await this.getNetworkId()\n Array.from(this._clients.keys())\n .filter(clientId => this._isRpcClientConnected(clientId))\n .map(clientId => this._getClient(clientId))\n .forEach(client => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode()\n })\n })\n }\n\n _getClient (clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId)\n if (client == null) throw new UnknownRpcClientError(clientId)\n return client\n }\n\n _isRpcClientSubscribed (clientId: string): boolean {\n return this._isRpcClientConnected(clientId) &&\n this._getClient(clientId).addressSubscription.size !== 0\n }\n\n _isRpcClientConnected (clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status &&\n this._getClient(clientId).rpc.connection.isConnected()\n }\n\n _disconnectRpcClient (clientId: string): void {\n const client = this._getClient(clientId)\n client.rpc.connection.disconnect()\n client.status = RPC_STATUS.DISCONNECTED\n client.addressSubscription = new Set()\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient (id: string): void {\n this._disconnectRpcClient(id)\n this._clients.delete(id)\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient (clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n let disconnectParams: any\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id)\n this.onDisconnect(id, disconnectParams) // also related info\n }, {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params\n this._disconnectRpcClient(id)\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({ name, version, icons, connectNode }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError()\n\n await this.onConnection(id, { name, icons, connectNode }, origin)\n client.status = RPC_STATUS.CONNECTED\n client.connectNode = connectNode\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode()\n }\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n\n await this.onSubscription(id, { type, value }, origin)\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n client.addressSubscription.add(value)\n break\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value)\n break\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this.getAccounts()\n }\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError()\n await this.onAskAccounts(id, params, origin)\n return this.addresses()\n },\n [METHODS.sign]: async ({ tx, onAccount, returnSigned }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n onAccount ??= await this.address()\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount)\n }\n\n const overrides = await this.onSign(id, { tx, returnSigned, onAccount }, origin)\n onAccount = overrides?.onAccount ?? onAccount\n tx = overrides?.tx ?? tx\n if (returnSigned) {\n return { signedTransaction: await this.signTransaction(tx, { onAccount }) }\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.send(tx, { onAccount, verify: false })\n }))\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api)\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation)\n throw new RpcBroadcastError(error.message)\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n onAccount ??= await this.address()\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount)\n }\n\n const overrides = await this.onMessageSign(id, { message, onAccount }, origin)\n onAccount = overrides?.onAccount ?? onAccount\n return {\n // TODO: fix signMessage return type\n signature: await this.signMessage(message, { onAccount, returnHex: true }) as\n unknown as string\n }\n }\n })\n }\n this._clients.set(id, client)\n return id\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo (clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo())\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo (): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.getNetworkId(),\n origin: window.location.origin,\n type: this._type\n }\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts (): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n}\n"],"mappings":";AAAA,SAASA,EAAE,IAAIC,IAAf,QAA2B,iBAA3B;OACOC,K;OAEAC,iB;OACAC,S;SAELC,O,EAASC,U,EAAYC,kB,EACrBC,iB,EAAmBC,0B,EACnBC,oB,EAAsBC,sB,EAAwBC,2B;SAEvCC,qB;SAOPC,W;OAKKC,O;;AAoCP;AACA;AACA;AACA,eAAe,MAAMC,WAAN,SAA0Bd,KAA1B,CAAgC;EAY7C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEe,WAAW,OAqBiC;IAAA,IArB/B;MACXC,IADW;MAEXC,EAFW;MAGXC,IAHW;MAIXC,YAJW;MAKXC,cALW;MAMXC,MANW;MAOXC,YAPW;MAQXC,aARW;MASXC,aATW;MAUX,GAAGC;IAVQ,CAqB+B;IAC1C,MAAMA,OAAN;IACA,KAAKN,YAAL,GAAoBA,YAApB;IACA,KAAKC,cAAL,GAAsBA,cAAtB;IACA,KAAKC,MAAL,GAAcA,MAAd;IACA,KAAKC,YAAL,GAAoBA,YAApB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKE,QAAL,GAAgB,IAAIC,GAAJ,EAAhB;IACA,KAAKX,IAAL,GAAYA,IAAZ;IACA,KAAKC,EAAL,GAAUA,EAAV;IACA,KAAKW,KAAL,GAAaV,IAAb;EACD;;EAEDW,mBAAmB,GAAU;IAC3BC,KAAK,CAACC,IAAN,CAAW,KAAKL,QAAL,CAAcM,IAAd,EAAX,EACGC,MADH,CACUC,QAAQ,IAAI,KAAKC,sBAAL,CAA4BD,QAA5B,CADtB,EAEGE,GAFH,CAEOF,QAAQ,IAAI,KAAKG,UAAL,CAAgBH,QAAhB,EAA0BI,GAF7C,EAGGC,OAHH,CAGWC,MAAM,IAAIA,MAAM,CAACC,MAAP,CAActC,OAAO,CAACuC,aAAtB,EAAqC,KAAKC,WAAL,EAArC,CAHrB;EAID;;EAEDC,aAAa,CAAEC,OAAF,EAAoC;IAC/C,MAAMD,aAAN,CAAoBC,OAApB;;IACA,KAAKhB,mBAAL;EACD;;EAEe,MAAViB,UAAU,CACdC,OADc,EAEdtB,OAFc,EAGC;IACf,MAAM,MAAMqB,UAAN,CAAiBC,OAAjB,EAA0BtB,OAA1B,CAAN;;IACA,KAAKI,mBAAL;EACD;;EAEDmB,QAAQ,GAA+B;IACrC,KAAKC,mBAAL;IACA,OAAO;MAAEC,IAAI,EAAE;QAAEC,GAAG,EAAE,KAAKC,GAAL,CAASD,GAAhB;QAAqBnC,IAAI,EAAE,KAAKqC;MAAhC;IAAR,CAAP;EACD;;EAEe,MAAVC,UAAU,CAAEtC,IAAF,EAA+B;IAC7C,MAAMsC,UAAN,CAAiBtC,IAAjB;IACA,MAAMuC,SAAS,GAAG,MAAM,KAAKC,YAAL,EAAxB;IACA1B,KAAK,CAACC,IAAN,CAAW,KAAKL,QAAL,CAAcM,IAAd,EAAX,EACGC,MADH,CACUC,QAAQ,IAAI,KAAKuB,qBAAL,CAA2BvB,QAA3B,CADtB,EAEGE,GAFH,CAEOF,QAAQ,IAAI,KAAKG,UAAL,CAAgBH,QAAhB,CAFnB,EAGGK,OAHH,CAGWC,MAAM,IAAI;MACjBA,MAAM,CAACF,GAAP,CAAWG,MAAX,CAAkBtC,OAAO,CAACuD,aAA1B,EAAyC;QACvCH,SADuC;QAEvC,IAAGf,MAAM,CAACmB,WAAP,IAAsB,KAAKX,QAAL,EAAzB;MAFuC,CAAzC;IAID,CARH;EASD;;EAEDX,UAAU,CAAEH,QAAF,EAAoC;IAC5C,MAAMM,MAAM,GAAG,KAAKd,QAAL,CAAckC,GAAd,CAAkB1B,QAAlB,CAAf;;IACA,IAAIM,MAAM,IAAI,IAAd,EAAoB,MAAM,IAAI7B,qBAAJ,CAA0BuB,QAA1B,CAAN;IACpB,OAAOM,MAAP;EACD;;EAEDL,sBAAsB,CAAED,QAAF,EAA6B;IACjD,OAAO,KAAKuB,qBAAL,CAA2BvB,QAA3B,KACL,KAAKG,UAAL,CAAgBH,QAAhB,EAA0B2B,mBAA1B,CAA8CC,IAA9C,KAAuD,CADzD;EAED;;EAEDL,qBAAqB,CAAEvB,QAAF,EAA6B;IAChD,OAAO9B,UAAU,CAAC2D,SAAX,KAAyB,KAAK1B,UAAL,CAAgBH,QAAhB,EAA0B8B,MAAnD,IACL,KAAK3B,UAAL,CAAgBH,QAAhB,EAA0BI,GAA1B,CAA8B2B,UAA9B,CAAyCC,WAAzC,EADF;EAED;;EAEDC,oBAAoB,CAAEjC,QAAF,EAA0B;IAC5C,MAAMM,MAAM,GAAG,KAAKH,UAAL,CAAgBH,QAAhB,CAAf;;IACAM,MAAM,CAACF,GAAP,CAAW2B,UAAX,CAAsBG,UAAtB;IACA5B,MAAM,CAACwB,MAAP,GAAgB5D,UAAU,CAACiE,YAA3B;IACA7B,MAAM,CAACqB,mBAAP,GAA6B,IAAIS,GAAJ,EAA7B;EACD;EAED;AACF;AACA;AACA;;;EACEC,eAAe,CAAEtD,EAAF,EAAoB;IACjC,KAAKkD,oBAAL,CAA0BlD,EAA1B;;IACA,KAAKS,QAAL,CAAc8C,MAAd,CAAqBvD,EAArB;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEwD,YAAY,CAAEC,gBAAF,EAA+C;IACzD;IACA;IACA,MAAMzD,EAAE,GAAGlB,IAAI,EAAf;IACA,IAAI4E,gBAAJ;IACA,MAAMnC,MAAsB,GAAG;MAC7BvB,EAD6B;MAE7B+C,MAAM,EAAE5D,UAAU,CAACwE,8BAFU;MAG7Bf,mBAAmB,EAAE,IAAIS,GAAJ,EAHQ;MAI7BX,WAAW,EAAE,KAJgB;MAK7BrB,GAAG,EAAE,IAAIpC,SAAJ,CACHwE,gBADG,EAEH,MAAM;QACJ,KAAKhD,QAAL,CAAc8C,MAAd,CAAqBvD,EAArB;;QACA,KAAKK,YAAL,CAAkBL,EAAlB,EAAsB0D,gBAAtB,EAFI,CAEoC;MACzC,CALE,EAKA;QACD,CAACxE,OAAO,CAAC0E,eAAT,GAA4BC,MAAD,IAAY;UACrCH,gBAAgB,GAAGG,MAAnB;;UACA,KAAKX,oBAAL,CAA0BlD,EAA1B;QACD,CAJA;QAKD;QACA;QACA,CAACd,OAAO,CAAC4E,OAAT,GAAmB,cAA8CC,MAA9C,KAAyD;UAAA,IAAlD;YAAEhE,IAAF;YAAQiE,OAAR;YAAiBC,KAAjB;YAAwBvB;UAAxB,CAAkD;UAC1E,IAAIsB,OAAO,KAAKrE,WAAhB,EAA6B,MAAM,IAAIF,2BAAJ,EAAN;UAE7B,MAAM,KAAKS,YAAL,CAAkBF,EAAlB,EAAsB;YAAED,IAAF;YAAQkE,KAAR;YAAevB;UAAf,CAAtB,EAAoDqB,MAApD,CAAN;UACAxC,MAAM,CAACwB,MAAP,GAAgB5D,UAAU,CAAC2D,SAA3B;UACAvB,MAAM,CAACmB,WAAP,GAAqBA,WAArB;UACA,OAAO,EACL,IAAG,MAAM,KAAKwB,aAAL,EAAT,CADK;YAEL,IAAGxB,WAAW,IAAI,KAAKX,QAAL,EAAlB;UAFK,CAAP;QAID,CAjBA;QAkBD,CAAC7C,OAAO,CAACiF,gBAAT,GAA4B,cAAwBJ,MAAxB,KAAmC;UAAA,IAA5B;YAAE9D,IAAF;YAAQmE;UAAR,CAA4B;UAC7D,IAAI,CAAC,KAAK5B,qBAAL,CAA2BxC,EAA3B,CAAL,EAAqC,MAAM,IAAIT,oBAAJ,EAAN;UAErC,MAAM,KAAKY,cAAL,CAAoBH,EAApB,EAAwB;YAAEC,IAAF;YAAQmE;UAAR,CAAxB,EAAyCL,MAAzC,CAAN;;UAEA,QAAQ9D,IAAR;YACE,KAAKb,kBAAkB,CAACiF,SAAxB;cACE9C,MAAM,CAACqB,mBAAP,CAA2B0B,GAA3B,CAA+BF,KAA/B;cACA;;YACF,KAAKhF,kBAAkB,CAACmF,WAAxB;cACEhD,MAAM,CAACqB,mBAAP,CAA2BW,MAA3B,CAAkCa,KAAlC;cACA;UANJ;;UASA,OAAO;YACLI,YAAY,EAAE3D,KAAK,CAACC,IAAN,CAAWS,MAAM,CAACqB,mBAAlB,CADT;YAELhB,OAAO,EAAE,KAAKF,WAAL;UAFJ,CAAP;QAID,CApCA;QAqCD,CAACxC,OAAO,CAAC0C,OAAT,GAAmB,OAAOiC,MAAP,EAAeE,MAAf,KAA0B;UAC3C,IAAI,CAAC,KAAK7C,sBAAL,CAA4BlB,EAA5B,CAAL,EAAsC,MAAM,IAAIT,oBAAJ,EAAN;UACtC,MAAM,KAAKe,aAAL,CAAmBN,EAAnB,EAAuB6D,MAAvB,EAA+BE,MAA/B,CAAN;UACA,OAAO,KAAKU,SAAL,EAAP;QACD,CAzCA;QA0CD,CAACvF,OAAO,CAACwF,IAAT,GAAgB,cAAwCX,MAAxC,KAAmD;UAAA;;UAAA,IAA5C;YAAEY,EAAF;YAAMC,SAAN;YAAiBC;UAAjB,CAA4C;UACjE,IAAI,CAAC,KAAKrC,qBAAL,CAA2BxC,EAA3B,CAAL,EAAqC,MAAM,IAAIT,oBAAJ,EAAN;UACrC,cAAAqF,SAAS,UAAT,yCAAAA,SAAS,GAAK,MAAM,KAAKhD,OAAL,EAApB;;UACA,IAAI,CAAC,0CAAK6C,SAAL,mBAA0BG,SAA1B,CAAL,EAA2C;YACzC,MAAM,IAAIpF,sBAAJ,CAA2BoF,SAA3B,CAAN;UACD;;UAED,MAAME,SAAS,GAAG,MAAM,KAAK1E,MAAL,CAAYJ,EAAZ,EAAgB;YAAE2E,EAAF;YAAME,YAAN;YAAoBD;UAApB,CAAhB,EAAiDb,MAAjD,CAAxB;UACAa,SAAS,2BAAGE,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEF,SAAd,uEAA2BA,SAApC;UACAD,EAAE,oBAAGG,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEH,EAAd,yDAAoBA,EAAtB;;UACA,IAAIE,YAAJ,EAAkB;YAChB,OAAO;cAAEE,iBAAiB,EAAE,MAAM,KAAKC,eAAL,CAAqBL,EAArB,EAAyB;gBAAEC;cAAF,CAAzB;YAA3B,CAAP;UACD;;UACD,IAAI;YACF,OAAOhF,OAAO,CAACqF,KAAR,CAAcrF,OAAO,CAACsF,SAAR,CAAkB;cACrCC,eAAe,EAAE,MAAM,KAAKC,IAAL,CAAUT,EAAV,EAAc;gBAAEC,SAAF;gBAAaS,MAAM,EAAE;cAArB,CAAd;YADc,CAAlB,CAAd,CAAP;UAGD,CAJD,CAIE,OAAOC,KAAP,EAAc;YACd,MAAMC,UAAU,GAAG,MAAMvG,iBAAiB,CAAC2F,EAAD,EAAK,KAAKxC,GAAV,CAA1C;YACA,IAAIoD,UAAU,CAACC,MAAX,GAAoB,CAAxB,EAA2B,MAAM,IAAIlG,0BAAJ,CAA+BiG,UAA/B,CAAN;YAC3B,MAAM,IAAIlG,iBAAJ,CAAsBiG,KAAK,CAACG,OAA5B,CAAN;UACD;QACF,CAhEA;QAiED,CAACvG,OAAO,CAACwG,WAAT,GAAuB,cAA+B3B,MAA/B,KAA0C;UAAA;;UAAA,IAAnC;YAAE0B,OAAF;YAAWb;UAAX,CAAmC;UAC/D,IAAI,CAAC,KAAKpC,qBAAL,CAA2BxC,EAA3B,CAAL,EAAqC,MAAM,IAAIT,oBAAJ,EAAN;UACrC,eAAAqF,SAAS,UAAT,2CAAAA,SAAS,GAAK,MAAM,KAAKhD,OAAL,EAApB;;UACA,IAAI,CAAC,2CAAK6C,SAAL,oBAA0BG,SAA1B,CAAL,EAA2C;YACzC,MAAM,IAAIpF,sBAAJ,CAA2BoF,SAA3B,CAAN;UACD;;UAED,MAAME,SAAS,GAAG,MAAM,KAAKvE,aAAL,CAAmBP,EAAnB,EAAuB;YAAEyF,OAAF;YAAWb;UAAX,CAAvB,EAA+Cb,MAA/C,CAAxB;UACAa,SAAS,4BAAGE,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEF,SAAd,yEAA2BA,SAApC;UACA,OAAO;YACL;YACAe,SAAS,EAAE,MAAM,KAAKD,WAAL,CAAiBD,OAAjB,EAA0B;cAAEb,SAAF;cAAagB,SAAS,EAAE;YAAxB,CAA1B;UAFZ,CAAP;QAKD;MA/EA,CALA;IALwB,CAA/B;;IA4FA,KAAKnF,QAAL,CAAcoF,GAAd,CAAkB7F,EAAlB,EAAsBuB,MAAtB;;IACA,OAAOvB,EAAP;EACD;EAED;AACF;AACA;AACA;;;EACuB,MAAf8F,eAAe,CAAE7E,QAAF,EAAmC;IACtD,KAAKG,UAAL,CAAgBH,QAAhB,EAA0BI,GAA1B,CAA8BG,MAA9B,CAAqCtC,OAAO,CAAC6G,cAA7C,EAA6D,MAAM,KAAK7B,aAAL,EAAnE;EACD;EAED;AACF;AACA;AACA;;;EACqB,MAAbA,aAAa,GAAyB;IAC1C,OAAO;MACLlE,EAAE,EAAE,KAAKA,EADJ;MAELD,IAAI,EAAE,KAAKA,IAFN;MAGLuC,SAAS,EAAE,MAAM,KAAKC,YAAL,EAHZ;MAILwB,MAAM,EAAEiC,MAAM,CAACC,QAAP,CAAgBlC,MAJnB;MAKL9D,IAAI,EAAE,KAAKU;IALN,CAAP;EAOD;EAED;AACF;AACA;AACA;;;EACEe,WAAW,GAAc;IACvB,OAAO;MACLwE,OAAO,EAAE,KAAKC,eAAL,IAAwB,IAAxB,GAA+B;QAAE,CAAC,KAAKA,eAAN,GAAwB;MAA1B,CAA/B,GAAgE,EADpE;MAELC,SAAS,EAAE,KAAK3B,SAAL,GACRzD,MADQ,CACAqF,CAAD,IAAOA,CAAC,KAAK,KAAKF,eADjB,EAERG,MAFQ,CAED,CAACC,GAAD,EAAMF,CAAN,MAAa,EAAE,GAAGE,GAAL;QAAU,CAACF,CAAD,GAAK;MAAf,CAAb,CAFC,EAEkC,EAFlC;IAFN,CAAP;EAMD;;AA7Q4C"}
package/es/Node.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ import { OperationArguments, OperationSpec } from '@azure/core-client';
2
+ import { Node as NodeApi, NodeOptionalParams } from './apis/node/';
3
+ import { EncodedData } from './utils/encoder';
4
+ /**
5
+ * Obtain networkId from account or node
6
+ */
7
+ export declare function getNetworkId({ networkId }?: {
8
+ networkId?: string;
9
+ }): Promise<string>;
10
+ declare const bigIntPropertyNames: readonly ["balance", "queryFee", "fee", "amount", "nameFee", "channelAmount", "initiatorAmount", "responderAmount", "channelReserve", "initiatorAmountFinal", "responderAmountFinal", "gasPrice", "deposit"];
11
+ declare const numberPropertyNames: readonly ["time", "gas", "gasUsed", "nameSalt", "nonce", "nextNonce", "height", "blockHeight", "top", "topBlockHeight", "ttl", "inbound", "outbound", "peerCount", "pendingTransactionsCount", "effectiveAtHeight", "version", "solutions"];
12
+ declare type BigIntPropertyNames = typeof bigIntPropertyNames[number];
13
+ declare type NumberPropertyNames = typeof numberPropertyNames[number];
14
+ declare type PreserveOptional<NewType, OrigType> = OrigType extends undefined ? NewType | undefined : NewType;
15
+ export declare type TransformNodeType<Type> = Type extends (...args: infer Args) => infer Ret ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret> : Type extends [infer Item, ...infer Rest] ? [TransformNodeType<Item>, ...TransformNodeType<Rest>] : Type extends Array<infer Item> ? Array<TransformNodeType<Item>> : Type extends Promise<infer T> ? Promise<TransformNodeType<T>> : Type extends {
16
+ [P in any]: any;
17
+ } ? {
18
+ [Property in keyof Type]: Property extends BigIntPropertyNames ? PreserveOptional<bigint, Type[Property]> : Property extends NumberPropertyNames ? PreserveOptional<number, Type[Property]> : Property extends 'txHash' ? PreserveOptional<EncodedData<'th'>, Type[Property]> : TransformNodeType<Type[Property]>;
19
+ } : Type;
20
+ declare type TransformedNode = new (...args: ConstructorParameters<typeof NodeApi>) => {
21
+ [Name in keyof InstanceType<typeof NodeApi>]: TransformNodeType<NodeApi[Name]>;
22
+ };
23
+ export interface NodeInfo {
24
+ url: string;
25
+ nodeNetworkId: string;
26
+ version: string;
27
+ consensusProtocolVersion: number;
28
+ }
29
+ declare const Node_base: TransformedNode;
30
+ export default class Node extends Node_base {
31
+ #private;
32
+ url: string;
33
+ /**
34
+ * @param url - Url for node API
35
+ * @param options - Options
36
+ * @param options.ignoreVersion - Don't check node version
37
+ */
38
+ constructor(url: string, { ignoreVersion, ...options }?: NodeOptionalParams & {
39
+ ignoreVersion?: boolean;
40
+ });
41
+ getNodeInfo(): Promise<NodeInfo>;
42
+ sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise<any>;
43
+ }
44
+ export {};
package/es/Node.mjs ADDED
@@ -0,0 +1,141 @@
1
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
2
+
3
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
+
5
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
6
+
7
+ import BigNumber from 'bignumber.js';
8
+ import { genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy, genVersionCheckPolicy } from "./utils/autorest.mjs";
9
+ import { Node as NodeApi } from "./apis/node/index.mjs";
10
+ import { mapObject } from "./utils/other.mjs";
11
+ import { MissingParamError } from "./utils/errors.mjs";
12
+ /**
13
+ * Obtain networkId from account or node
14
+ */
15
+
16
+ export async function getNetworkId() {
17
+ var _ref, _this$api;
18
+
19
+ let {
20
+ networkId
21
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
+ const res = (_ref = networkId !== null && networkId !== void 0 ? networkId : this.networkId) !== null && _ref !== void 0 ? _ref : (await ((_this$api = this.api) === null || _this$api === void 0 ? void 0 : _this$api.getStatus())).networkId;
23
+ if (res != null) return res;
24
+ throw new MissingParamError('networkId is not provided');
25
+ }
26
+ const bigIntPropertyNames = ['balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount', 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal', 'responderAmountFinal', 'gasPrice', 'deposit'];
27
+ const numberPropertyNames = ['time', 'gas', 'gasUsed', 'nameSalt', 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl', 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight', 'version', 'solutions'];
28
+
29
+ var _mapData = /*#__PURE__*/new WeakSet();
30
+
31
+ var _encodeArg = /*#__PURE__*/new WeakSet();
32
+
33
+ var _decodeRes = /*#__PURE__*/new WeakSet();
34
+
35
+ export default class Node extends NodeApi {
36
+ /**
37
+ * @param url - Url for node API
38
+ * @param options - Options
39
+ * @param options.ignoreVersion - Don't check node version
40
+ */
41
+ constructor(url) {
42
+ let {
43
+ ignoreVersion = false,
44
+ ...options
45
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
46
+ // eslint-disable-next-line constructor-super
47
+ super(url, {
48
+ allowInsecureConnection: true,
49
+ additionalPolicies: [genRequestQueuesPolicy(), genCombineGetRequestsPolicy(), genErrorFormatterPolicy(body => ` ${body.reason}`)],
50
+ ...options
51
+ });
52
+
53
+ _classPrivateMethodInitSpec(this, _decodeRes);
54
+
55
+ _classPrivateMethodInitSpec(this, _encodeArg);
56
+
57
+ _classPrivateMethodInitSpec(this, _mapData);
58
+
59
+ this.url = url;
60
+
61
+ if (!ignoreVersion) {
62
+ const versionPromise = this.getStatus().then(_ref2 => {
63
+ let {
64
+ nodeVersion
65
+ } = _ref2;
66
+ return nodeVersion;
67
+ });
68
+ this.pipeline.addPolicy(genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'));
69
+ }
70
+
71
+ this.intAsString = true;
72
+ }
73
+
74
+ async getNodeInfo() {
75
+ const {
76
+ nodeVersion: version,
77
+ networkId: nodeNetworkId,
78
+ protocols,
79
+ topBlockHeight
80
+ } = await this.getStatus();
81
+ const consensusProtocolVersion = protocols.filter(_ref3 => {
82
+ let {
83
+ effectiveAtHeight
84
+ } = _ref3;
85
+ return topBlockHeight >= effectiveAtHeight;
86
+ }).reduce((acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc, {
87
+ effectiveAtHeight: -1,
88
+ version: 0
89
+ }).version;
90
+ return {
91
+ url: this.url,
92
+ nodeNetworkId,
93
+ version,
94
+ consensusProtocolVersion
95
+ };
96
+ } // @ts-expect-error https://github.com/microsoft/TypeScript/issues/27689
97
+
98
+
99
+ async sendOperationRequest(operationArguments, operationSpec) {
100
+ const args = mapObject(operationArguments, _ref4 => {
101
+ let [key, value] = _ref4;
102
+ return [key, _classPrivateMethodGet(this, _encodeArg, _encodeArg2).call(this, value)];
103
+ });
104
+ return _classPrivateMethodGet(this, _decodeRes, _decodeRes2).call(this, await super.sendOperationRequest(args, operationSpec));
105
+ }
106
+
107
+ }
108
+
109
+ function _mapData2(data, transform) {
110
+ if (Array.isArray(data)) return data.map(d => _classPrivateMethodGet(this, _mapData, _mapData2).call(this, d, transform));
111
+
112
+ if (data != null && typeof data === 'object') {
113
+ return mapObject(data, _ref5 => {
114
+ let [key, value] = _ref5;
115
+ if (value == null) return [key, value];
116
+ if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)];
117
+ if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)];
118
+ return [key, _classPrivateMethodGet(this, _mapData, _mapData2).call(this, value, transform)];
119
+ });
120
+ }
121
+
122
+ return data;
123
+ }
124
+
125
+ function _encodeArg2(data) {
126
+ return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
127
+ bigInt: value => {
128
+ if (value instanceof BigNumber) return value.toFixed();
129
+ return value.toString();
130
+ },
131
+ number: value => value.toString()
132
+ });
133
+ }
134
+
135
+ function _decodeRes2(data) {
136
+ return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
137
+ bigInt: value => BigInt(value),
138
+ number: value => +value
139
+ });
140
+ }
141
+ //# sourceMappingURL=Node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.mjs","names":["BigNumber","genRequestQueuesPolicy","genCombineGetRequestsPolicy","genErrorFormatterPolicy","genVersionCheckPolicy","Node","NodeApi","mapObject","MissingParamError","getNetworkId","networkId","res","api","getStatus","bigIntPropertyNames","numberPropertyNames","constructor","url","ignoreVersion","options","allowInsecureConnection","additionalPolicies","body","reason","versionPromise","then","nodeVersion","pipeline","addPolicy","intAsString","getNodeInfo","version","nodeNetworkId","protocols","topBlockHeight","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p","sendOperationRequest","operationArguments","operationSpec","args","key","value","data","transform","Array","isArray","map","d","some","k","bigInt","number","toFixed","toString","BigInt"],"sources":["../src/Node.ts"],"sourcesContent":["import BigNumber from 'bignumber.js'\nimport { OperationArguments, OperationSpec } from '@azure/core-client'\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy\n} from './utils/autorest'\nimport { Node as NodeApi, NodeOptionalParams, ErrorModel } from './apis/node/'\nimport { mapObject } from './utils/other'\nimport { EncodedData } from './utils/encoder'\nimport { MissingParamError } from './utils/errors'\n\n/**\n * Obtain networkId from account or node\n */\nexport async function getNetworkId ({ networkId }: { networkId?: string } = {}): Promise<string> {\n const res = networkId ?? this.networkId ?? (await this.api?.getStatus()).networkId\n if (res != null) return res\n throw new MissingParamError('networkId is not provided')\n}\n\nconst bigIntPropertyNames = [\n 'balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount',\n 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal',\n 'responderAmountFinal', 'gasPrice', 'deposit'\n] as const\n\nconst numberPropertyNames = [\n 'time', 'gas', 'gasUsed', 'nameSalt',\n 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl',\n 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight',\n 'version', 'solutions'\n] as const\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number]\ntype NumberPropertyNames = typeof numberPropertyNames[number]\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType\nexport type TransformNodeType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformNodeType<Item>, ...TransformNodeType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformNodeType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformNodeType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<EncodedData<'th'>, Type[Property]>\n : TransformNodeType<Type[Property]>\n }\n : Type\ntype TransformedNode = new (...args: ConstructorParameters<typeof NodeApi>) => {\n [Name in keyof InstanceType<typeof NodeApi>]: TransformNodeType<NodeApi[Name]>\n}\n\nexport interface NodeInfo {\n url: string\n nodeNetworkId: string\n version: string\n consensusProtocolVersion: number\n}\n\nexport default class Node extends (NodeApi as unknown as TransformedNode) {\n url: string\n\n /**\n * @param url - Url for node API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n */\n constructor (\n url: string,\n { ignoreVersion = false, ...options }: NodeOptionalParams & { ignoreVersion?: boolean } = {}\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genErrorFormatterPolicy((body: ErrorModel) => ` ${body.reason}`)\n ],\n ...options\n })\n this.url = url\n if (!ignoreVersion) {\n const versionPromise = this.getStatus().then(({ nodeVersion }) => nodeVersion)\n this.pipeline.addPolicy(genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'))\n }\n this.intAsString = true\n }\n\n async getNodeInfo (): Promise<NodeInfo> {\n const {\n nodeVersion: version,\n networkId: nodeNetworkId,\n protocols,\n topBlockHeight\n } = await this.getStatus()\n const consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n return {\n url: this.url,\n nodeNetworkId,\n version,\n consensusProtocolVersion\n }\n }\n\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/27689\n async sendOperationRequest (\n operationArguments: OperationArguments, operationSpec: OperationSpec\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)]\n ) as OperationArguments\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec))\n }\n\n #mapData (\n data: any, transform: {\n bigInt: (v: any) => any\n number: (v: any) => any\n }\n ): unknown {\n if (Array.isArray(data)) return data.map(d => this.#mapData(d, transform))\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value]\n if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)]\n if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)]\n return [key, this.#mapData(value, transform)]\n })\n }\n return data\n }\n\n #encodeArg (data: any): any {\n return this.#mapData(data, {\n bigInt: value => {\n if (value instanceof BigNumber) return value.toFixed()\n return value.toString()\n },\n number: value => value.toString()\n })\n }\n\n #decodeRes (data: any): any {\n return this.#mapData(data, {\n bigInt: value => BigInt(value),\n number: value => +value\n })\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { EncodedData } from '../utils/encoder';
2
+ import { getNetworkId } from '../Node';
3
+ /**
4
+ * Check is provided object looks like an instance of AccountBase
5
+ * @param acc - Object to check
6
+ */
7
+ export declare const isAccountBase: (acc: AccountBase | any) => boolean;
8
+ /**
9
+ * Account is one of the three basic building blocks of an
10
+ * {@link AeSdk} and provides access to a signing key pair.
11
+ */
12
+ export default abstract class AccountBase {
13
+ networkId?: string;
14
+ /**
15
+ * @param options - Options
16
+ * @param options.networkId - Using for signing transactions
17
+ */
18
+ constructor({ networkId }?: {
19
+ networkId?: string;
20
+ });
21
+ /**
22
+ * Sign encoded transaction
23
+ * @param tx - Transaction to sign
24
+ * @param opt - Options
25
+ * @param opt.innerTx - Sign as inner transaction for PayingFor
26
+ * @returns Signed transaction
27
+ */
28
+ signTransaction(tx: EncodedData<'tx'>, { innerTx, networkId, ...options }?: {
29
+ innerTx?: boolean;
30
+ networkId?: string;
31
+ }): Promise<EncodedData<'tx'>>;
32
+ /**
33
+ * Get network Id
34
+ * @returns Network Id
35
+ */
36
+ readonly getNetworkId: typeof getNetworkId;
37
+ /**
38
+ * Sign message
39
+ * @param message - Message to sign
40
+ * @param opt - Options
41
+ * @returns Signature as hex string of Uint8Array
42
+ */
43
+ signMessage(message: string, { returnHex, ...options }?: {
44
+ returnHex?: boolean;
45
+ }): Promise<string | Uint8Array>;
46
+ /**
47
+ * Verify message
48
+ * @param message - Message to verify
49
+ * @param signature - Signature
50
+ * @param options - Options
51
+ */
52
+ verifyMessage(message: string, signature: string | Uint8Array, options?: object): Promise<boolean>;
53
+ /**
54
+ * Sign data blob
55
+ * @param data - Data blob to sign
56
+ * @param options - Options
57
+ * @returns Signed data blob
58
+ */
59
+ abstract sign(data: string | Uint8Array, options?: any): Promise<Uint8Array>;
60
+ /**
61
+ * Obtain account address
62
+ * @returns Public account address
63
+ */
64
+ abstract address(opt?: object): Promise<EncodedData<'ak'>>;
65
+ }