@aeternity/aepp-sdk 10.0.0 → 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 (424) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -14
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +69 -0
  14. package/es/AeSdkAepp.mjs +175 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +212 -0
  17. package/es/AeSdkBase.mjs +310 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +103 -0
  20. package/es/AeSdkWallet.mjs +322 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +44 -0
  23. package/es/Node.mjs +141 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +65 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +25 -0
  29. package/es/account/Memory.mjs +81 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +79 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +209 -0
  35. package/es/aens.mjs +332 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +118 -0
  56. package/es/aepp-wallet-communication/schema.mjs +214 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1061 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4164 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +220 -0
  92. package/es/chain.mjs +524 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/{handlers.js → handlers.mjs} +163 -130
  96. package/es/channel/handlers.mjs.map +1 -0
  97. package/es/channel/index.d.ts +634 -0
  98. package/es/channel/index.mjs +978 -0
  99. package/es/channel/index.mjs.map +1 -0
  100. package/es/channel/internal.d.ts +100 -0
  101. package/es/channel/internal.mjs +328 -0
  102. package/es/channel/internal.mjs.map +1 -0
  103. package/es/contract/Compiler.d.ts +17 -0
  104. package/es/contract/Compiler.mjs +67 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +125 -0
  107. package/es/contract/aci.mjs +496 -0
  108. package/es/contract/aci.mjs.map +1 -0
  109. package/es/contract/ga.d.ts +68 -0
  110. package/es/contract/ga.mjs +190 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +68 -0
  113. package/es/contract/methods.mjs +101 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/index.d.ts +32 -0
  116. package/es/index.mjs +49 -0
  117. package/es/index.mjs.map +1 -0
  118. package/es/oracle.d.ts +154 -0
  119. package/es/oracle.mjs +288 -0
  120. package/es/oracle.mjs.map +1 -0
  121. package/es/spend.d.ts +61 -0
  122. package/es/spend.mjs +122 -0
  123. package/es/spend.mjs.map +1 -0
  124. package/es/tx/builder/constants.d.ts +41 -0
  125. package/es/tx/builder/constants.mjs +100 -0
  126. package/es/tx/builder/constants.mjs.map +1 -0
  127. package/es/tx/builder/field-types.d.ts +62 -0
  128. package/es/tx/builder/field-types.mjs +126 -0
  129. package/es/tx/builder/field-types.mjs.map +1 -0
  130. package/es/tx/builder/helpers.d.ts +131 -0
  131. package/es/tx/builder/helpers.mjs +223 -0
  132. package/es/tx/builder/helpers.mjs.map +1 -0
  133. package/es/tx/builder/index.d.ts +75 -0
  134. package/es/tx/builder/index.mjs +424 -0
  135. package/es/tx/builder/index.mjs.map +1 -0
  136. package/es/tx/builder/schema.d.ts +350 -0
  137. package/es/tx/builder/schema.mjs +320 -0
  138. package/es/tx/builder/schema.mjs.map +1 -0
  139. package/es/tx/index.d.ts +63 -0
  140. package/es/tx/index.mjs +209 -0
  141. package/es/tx/index.mjs.map +1 -0
  142. package/es/tx/min-fee.d.ts +20 -0
  143. package/es/tx/min-fee.mjs +148 -0
  144. package/es/tx/min-fee.mjs.map +1 -0
  145. package/es/tx/validator.d.ts +19 -0
  146. package/es/tx/validator.mjs +240 -0
  147. package/es/tx/validator.mjs.map +1 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  149. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  151. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  152. package/es/typings/bip32-path/index.d.mjs +2 -0
  153. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  154. package/es/typings/blakejs/index.d.mjs +2 -0
  155. package/es/typings/blakejs/index.d.mjs.map +1 -0
  156. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  157. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  158. package/es/utils/amount-formatter.d.ts +42 -0
  159. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
  160. package/es/utils/amount-formatter.mjs.map +1 -0
  161. package/es/utils/autorest.d.ts +6 -0
  162. package/es/utils/autorest.mjs +97 -0
  163. package/es/utils/autorest.mjs.map +1 -0
  164. package/es/utils/bignumber.d.ts +13 -0
  165. package/es/utils/bignumber.mjs +23 -0
  166. package/es/utils/bignumber.mjs.map +1 -0
  167. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  168. package/es/utils/{bytes.js → bytes.mjs} +26 -22
  169. package/es/utils/bytes.mjs.map +1 -0
  170. package/es/utils/crypto.d.ts +103 -0
  171. package/es/utils/crypto.mjs +221 -0
  172. package/es/utils/crypto.mjs.map +1 -0
  173. package/es/utils/encoder.d.ts +26 -0
  174. package/es/utils/encoder.mjs +102 -0
  175. package/es/utils/encoder.mjs.map +1 -0
  176. package/es/utils/errors.d.ts +481 -0
  177. package/es/utils/errors.mjs +882 -0
  178. package/es/utils/errors.mjs.map +1 -0
  179. package/es/utils/hd-wallet.d.ts +34 -0
  180. package/es/utils/hd-wallet.mjs +122 -0
  181. package/es/utils/hd-wallet.mjs.map +1 -0
  182. package/es/utils/json-big.d.ts +5 -0
  183. package/es/utils/json-big.mjs +41 -0
  184. package/es/utils/json-big.mjs.map +1 -0
  185. package/es/utils/keystore.d.ts +51 -0
  186. package/es/utils/keystore.mjs +145 -0
  187. package/es/utils/keystore.mjs.map +1 -0
  188. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  189. package/es/utils/{mptree.js → mptree.mjs} +33 -25
  190. package/es/utils/mptree.mjs.map +1 -0
  191. package/es/utils/other.d.ts +14 -0
  192. package/es/utils/other.mjs +28 -0
  193. package/es/utils/other.mjs.map +1 -0
  194. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  195. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  196. package/es/utils/semver-satisfies.mjs.map +1 -0
  197. package/es/utils/string.d.ts +24 -0
  198. package/es/utils/{string.js → string.mjs} +9 -11
  199. package/es/utils/string.mjs.map +1 -0
  200. package/package.json +67 -64
  201. package/src/AeSdk.ts +65 -0
  202. package/src/AeSdkAepp.ts +167 -0
  203. package/src/AeSdkBase.ts +320 -0
  204. package/src/AeSdkWallet.ts +332 -0
  205. package/src/Node.ts +167 -0
  206. package/src/account/Base.ts +114 -0
  207. package/src/account/Memory.ts +83 -0
  208. package/src/account/Rpc.ts +67 -0
  209. package/src/aens.ts +391 -0
  210. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  211. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  212. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  213. package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
  214. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  215. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  216. package/src/aepp-wallet-communication/schema.ts +181 -0
  217. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  218. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  219. package/src/apis/compiler/compiler.ts +585 -0
  220. package/src/apis/compiler/index.ts +2 -0
  221. package/src/apis/compiler/models/index.ts +301 -0
  222. package/src/apis/compiler/models/mappers.ts +583 -0
  223. package/src/apis/compiler/models/parameters.ts +93 -0
  224. package/src/apis/node/code-model-v4.yaml +10046 -0
  225. package/src/apis/node/index.ts +2 -0
  226. package/src/apis/node/models/index.ts +1253 -0
  227. package/src/apis/node/models/mappers.ts +4278 -0
  228. package/src/apis/node/models/parameters.ts +188 -0
  229. package/src/apis/node/node.ts +1299 -0
  230. package/src/chain.ts +444 -0
  231. package/src/channel/{handlers.js → handlers.ts} +238 -143
  232. package/src/channel/index.ts +991 -0
  233. package/src/channel/internal.ts +345 -0
  234. package/src/contract/Compiler.ts +66 -0
  235. package/src/contract/aci.ts +529 -0
  236. package/src/contract/ga.ts +178 -0
  237. package/src/contract/methods.ts +118 -0
  238. package/src/index.ts +51 -0
  239. package/src/oracle.ts +342 -0
  240. package/src/spend.ts +152 -0
  241. package/src/tx/builder/constants.ts +96 -0
  242. package/src/tx/builder/field-types.ts +111 -0
  243. package/src/tx/builder/helpers.ts +253 -0
  244. package/src/tx/builder/index.ts +394 -0
  245. package/src/tx/builder/schema.ts +771 -0
  246. package/src/tx/index.ts +199 -0
  247. package/src/tx/min-fee.ts +136 -0
  248. package/src/tx/validator.ts +226 -0
  249. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  250. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  251. package/src/typings/bip32-path/index.d.ts +33 -0
  252. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  253. package/src/utils/amount-formatter.ts +29 -41
  254. package/src/utils/autorest.ts +90 -0
  255. package/src/utils/bignumber.ts +9 -19
  256. package/src/utils/bytes.ts +15 -16
  257. package/src/utils/crypto.ts +217 -0
  258. package/src/utils/encoder.ts +98 -0
  259. package/src/utils/errors.ts +817 -0
  260. package/src/utils/hd-wallet.ts +134 -0
  261. package/src/utils/json-big.ts +26 -0
  262. package/src/utils/keystore.ts +179 -0
  263. package/src/utils/mptree.ts +26 -20
  264. package/src/utils/other.ts +28 -43
  265. package/src/utils/string.ts +8 -10
  266. package/CHANGELOG.md +0 -1603
  267. package/es/account/base.js +0 -169
  268. package/es/account/base.js.map +0 -1
  269. package/es/account/memory.js +0 -84
  270. package/es/account/memory.js.map +0 -1
  271. package/es/account/multiple.js +0 -178
  272. package/es/account/multiple.js.map +0 -1
  273. package/es/ae/aens.js +0 -408
  274. package/es/ae/aens.js.map +0 -1
  275. package/es/ae/aepp.js +0 -45
  276. package/es/ae/aepp.js.map +0 -1
  277. package/es/ae/contract.js +0 -312
  278. package/es/ae/contract.js.map +0 -1
  279. package/es/ae/index.js +0 -206
  280. package/es/ae/index.js.map +0 -1
  281. package/es/ae/oracle.js +0 -322
  282. package/es/ae/oracle.js.map +0 -1
  283. package/es/ae/universal.js +0 -45
  284. package/es/ae/universal.js.map +0 -1
  285. package/es/ae/wallet.js +0 -50
  286. package/es/ae/wallet.js.map +0 -1
  287. package/es/amount-formatter.d.ts +0 -58
  288. package/es/bignumber.d.ts +0 -24
  289. package/es/chain/index.js +0 -256
  290. package/es/chain/index.js.map +0 -1
  291. package/es/chain/node.js +0 -394
  292. package/es/chain/node.js.map +0 -1
  293. package/es/channel/handlers.js.map +0 -1
  294. package/es/channel/index.js +0 -980
  295. package/es/channel/index.js.map +0 -1
  296. package/es/channel/internal.js +0 -266
  297. package/es/channel/internal.js.map +0 -1
  298. package/es/contract/aci/helpers.js +0 -298
  299. package/es/contract/aci/helpers.js.map +0 -1
  300. package/es/contract/aci/index.js +0 -361
  301. package/es/contract/aci/index.js.map +0 -1
  302. package/es/contract/aci/transformation.js +0 -66
  303. package/es/contract/aci/transformation.js.map +0 -1
  304. package/es/contract/compiler.js +0 -244
  305. package/es/contract/compiler.js.map +0 -1
  306. package/es/contract/ga/helpers.js +0 -22
  307. package/es/contract/ga/helpers.js.map +0 -1
  308. package/es/contract/ga/index.js +0 -170
  309. package/es/contract/ga/index.js.map +0 -1
  310. package/es/contract/index.js +0 -162
  311. package/es/contract/index.js.map +0 -1
  312. package/es/crypto-ts.d.ts +0 -9
  313. package/es/index.js +0 -57
  314. package/es/index.js.map +0 -1
  315. package/es/node-pool/index.js +0 -187
  316. package/es/node-pool/index.js.map +0 -1
  317. package/es/node.js +0 -132
  318. package/es/node.js.map +0 -1
  319. package/es/other.d.ts +0 -31
  320. package/es/string.d.ts +0 -26
  321. package/es/tx/builder/helpers.js +0 -305
  322. package/es/tx/builder/helpers.js.map +0 -1
  323. package/es/tx/builder/index.js +0 -595
  324. package/es/tx/builder/index.js.map +0 -1
  325. package/es/tx/builder/schema.js +0 -814
  326. package/es/tx/builder/schema.js.map +0 -1
  327. package/es/tx/index.js +0 -300
  328. package/es/tx/index.js.map +0 -1
  329. package/es/tx/tx-object.js +0 -276
  330. package/es/tx/tx-object.js.map +0 -1
  331. package/es/tx/tx.js +0 -937
  332. package/es/tx/tx.js.map +0 -1
  333. package/es/tx/validator.js +0 -208
  334. package/es/tx/validator.js.map +0 -1
  335. package/es/typings/blakejs/index.d.js +0 -2
  336. package/es/typings/blakejs/index.d.js.map +0 -1
  337. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
  338. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  339. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
  340. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  341. package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
  342. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  343. package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
  344. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  345. package/es/utils/aepp-wallet-communication/helpers.js +0 -103
  346. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  347. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
  348. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  349. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
  350. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  351. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
  352. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  353. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  354. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  355. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
  356. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  357. package/es/utils/amount-formatter.js.map +0 -1
  358. package/es/utils/async-init.js +0 -67
  359. package/es/utils/async-init.js.map +0 -1
  360. package/es/utils/bignumber.js +0 -28
  361. package/es/utils/bignumber.js.map +0 -1
  362. package/es/utils/bytes.js.map +0 -1
  363. package/es/utils/crypto-ts.js.map +0 -1
  364. package/es/utils/crypto.js +0 -304
  365. package/es/utils/crypto.js.map +0 -1
  366. package/es/utils/hd-wallet.js +0 -112
  367. package/es/utils/hd-wallet.js.map +0 -1
  368. package/es/utils/json-big.js +0 -45
  369. package/es/utils/json-big.js.map +0 -1
  370. package/es/utils/keystore.js +0 -228
  371. package/es/utils/keystore.js.map +0 -1
  372. package/es/utils/mptree.js.map +0 -1
  373. package/es/utils/other.js +0 -43
  374. package/es/utils/other.js.map +0 -1
  375. package/es/utils/semver-satisfies.js.map +0 -1
  376. package/es/utils/string.js.map +0 -1
  377. package/es/utils/swagger.js +0 -132
  378. package/es/utils/swagger.js.map +0 -1
  379. package/src/account/base.js +0 -153
  380. package/src/account/memory.js +0 -78
  381. package/src/account/multiple.js +0 -154
  382. package/src/ae/aens.js +0 -366
  383. package/src/ae/aepp.js +0 -45
  384. package/src/ae/contract.js +0 -285
  385. package/src/ae/index.js +0 -167
  386. package/src/ae/oracle.js +0 -296
  387. package/src/ae/universal.js +0 -47
  388. package/src/ae/wallet.js +0 -50
  389. package/src/chain/index.js +0 -250
  390. package/src/chain/node.js +0 -293
  391. package/src/channel/index.js +0 -898
  392. package/src/channel/internal.js +0 -231
  393. package/src/contract/aci/index.js +0 -317
  394. package/src/contract/aci/transformation.js +0 -72
  395. package/src/contract/compiler.js +0 -195
  396. package/src/contract/ga/helpers.js +0 -17
  397. package/src/contract/ga/index.js +0 -147
  398. package/src/contract/index.js +0 -163
  399. package/src/index.js +0 -90
  400. package/src/node-pool/index.js +0 -171
  401. package/src/node.js +0 -118
  402. package/src/tx/builder/helpers.js +0 -325
  403. package/src/tx/builder/index.js +0 -460
  404. package/src/tx/builder/schema.js +0 -1211
  405. package/src/tx/index.js +0 -301
  406. package/src/tx/tx-object.js +0 -186
  407. package/src/tx/tx.js +0 -622
  408. package/src/tx/validator.js +0 -161
  409. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
  410. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
  411. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  412. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
  413. package/src/utils/aepp-wallet-communication/helpers.js +0 -70
  414. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
  415. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
  416. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
  417. package/src/utils/aepp-wallet-communication/schema.js +0 -108
  418. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
  419. package/src/utils/async-init.js +0 -41
  420. package/src/utils/crypto.js +0 -312
  421. package/src/utils/hd-wallet.js +0 -115
  422. package/src/utils/json-big.js +0 -26
  423. package/src/utils/keystore.js +0 -223
  424. package/src/utils/swagger.js +0 -133
@@ -1,533 +0,0 @@
1
- /**
2
- * RPC handler for WAELLET side
3
- *
4
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc
5
- * @export WalletRpc
6
- * @example
7
- * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'
8
- */
9
- import { v4 as uuid } from 'uuid';
10
- import Ae from '../../../ae';
11
- import verifyTransaction from '../../../tx/validator';
12
- import AccountMultiple from '../../../account/multiple';
13
- import TxObject from '../../../tx/tx-object';
14
- import RpcClient from './rpc-client';
15
- import { getBrowserAPI, getHandler, isValidAccounts, message, resolveOnAccount, sendResponseMessage } from '../helpers';
16
- import { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema';
17
- const NOTIFICATIONS = {
18
- [METHODS.closeConnection]: (instance, _ref) => {
19
- let {
20
- client
21
- } = _ref;
22
- return async msg => {
23
- client.disconnect(true);
24
- instance.onDisconnect(msg.params, client);
25
- };
26
- }
27
- };
28
- const RESPONSES = {};
29
- const REQUESTS = {
30
- // Store client info and prepare two fn for each client `connect` and `denyConnection`
31
- // which automatically prepare and send response for that client
32
- [METHODS.aepp.connect](callInstance, instance, client, _ref2) {
33
- let {
34
- name,
35
- networkId,
36
- version,
37
- icons
38
- } = _ref2;
39
- // Check if protocol and network is compatible with wallet
40
- if (version !== VERSION) return {
41
- error: ERRORS.unsupportedProtocol()
42
- }; // Store new AEPP and wait for connection approve
43
-
44
- client.updateInfo({
45
- status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,
46
- name,
47
- networkId,
48
- icons,
49
- version
50
- }); // Call onConnection callBack to notice Wallet about new AEPP
51
-
52
- return callInstance('onConnection', {
53
- name,
54
- networkId,
55
- version
56
- }, () => {
57
- client.updateInfo({
58
- status: RPC_STATUS.CONNECTED
59
- });
60
- return {
61
- result: instance.getWalletInfo()
62
- };
63
- }, error => {
64
- client.updateInfo({
65
- status: RPC_STATUS.CONNECTION_REJECTED
66
- });
67
- return {
68
- error: ERRORS.connectionDeny(error)
69
- };
70
- });
71
- },
72
-
73
- [METHODS.aepp.subscribeAddress](callInstance, instance, client, _ref3) {
74
- let {
75
- type,
76
- value
77
- } = _ref3;
78
- // Authorization check
79
- if (!client.isConnected()) return {
80
- error: ERRORS.notAuthorize()
81
- };
82
- return callInstance('onSubscription', {
83
- type,
84
- value
85
- }, async function () {
86
- let {
87
- accounts
88
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
89
-
90
- try {
91
- const clientAccounts = accounts || instance.getAccounts();
92
- if (!isValidAccounts(clientAccounts)) throw new Error('Invalid provided accounts object');
93
- const subscription = client.updateSubscription(type, value);
94
- client.setAccounts(clientAccounts, {
95
- forceNotification: true
96
- });
97
- return {
98
- result: {
99
- subscription,
100
- address: clientAccounts
101
- }
102
- };
103
- } catch (e) {
104
- if (instance.debug) console.error(e);
105
- return {
106
- error: ERRORS.internalError({
107
- msg: e.message
108
- })
109
- };
110
- }
111
- }, error => ({
112
- error: ERRORS.rejectedByUser(error)
113
- }));
114
- },
115
-
116
- [METHODS.aepp.address](callInstance, instance, client) {
117
- // Authorization check
118
- if (!client.isConnected()) return {
119
- error: ERRORS.notAuthorize()
120
- };
121
- if (!client.isSubscribed()) return {
122
- error: ERRORS.notAuthorize()
123
- };
124
- return callInstance('onAskAccounts', {}, function () {
125
- let {
126
- accounts
127
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
128
- return {
129
- result: accounts || [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]
130
- };
131
- }, error => ({
132
- error: ERRORS.rejectedByUser(error)
133
- }));
134
- },
135
-
136
- [METHODS.aepp.sign](callInstance, instance, client, options) {
137
- const {
138
- tx,
139
- onAccount,
140
- networkId,
141
- returnSigned = false
142
- } = options;
143
- const address = onAccount || client.currentAccount; // Update client with new networkId
144
-
145
- networkId && client.updateInfo({
146
- networkId
147
- }); // Authorization check
148
-
149
- if (!client.isConnected()) return {
150
- error: ERRORS.notAuthorize()
151
- }; // Account permission check
152
-
153
- if (!client.hasAccessToAccount(address)) {
154
- return {
155
- error: ERRORS.permissionDeny({
156
- account: address
157
- })
158
- };
159
- } // NetworkId check
160
-
161
-
162
- if (!networkId || networkId !== instance.getNetworkId()) {
163
- return {
164
- error: ERRORS.unsupportedNetwork()
165
- };
166
- }
167
-
168
- return callInstance('onSign', {
169
- tx,
170
- returnSigned,
171
- onAccount: address,
172
- txObject: TxObject.fromString(tx)
173
- }, async function (rawTx) {
174
- let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
175
- let onAcc;
176
-
177
- try {
178
- onAcc = resolveOnAccount(instance.addresses(), address, opt);
179
- } catch (e) {
180
- if (instance.debug) console.error(e);
181
- return {
182
- error: ERRORS.internalError({
183
- msg: e.message
184
- })
185
- };
186
- }
187
-
188
- try {
189
- const t = rawTx || tx;
190
- const result = returnSigned ? {
191
- signedTransaction: await instance.signTransaction(t, {
192
- onAccount: onAcc
193
- })
194
- } : {
195
- transactionHash: await instance.send(t, {
196
- onAccount: onAcc,
197
- verify: false
198
- })
199
- };
200
- return {
201
- result
202
- };
203
- } catch (e) {
204
- if (!returnSigned) {
205
- // Validate transaction
206
- const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance);
207
- if (validation.length) return {
208
- error: ERRORS.invalidTransaction(validation)
209
- }; // Send broadcast failed error to aepp
210
-
211
- return {
212
- error: ERRORS.broadcastFailed(e.message)
213
- };
214
- }
215
-
216
- throw e;
217
- }
218
- }, error => ({
219
- error: ERRORS.rejectedByUser(error)
220
- }));
221
- },
222
-
223
- [METHODS.aepp.signMessage](callInstance, instance, client, _ref4) {
224
- let {
225
- message,
226
- onAccount
227
- } = _ref4;
228
- // Authorization check
229
- if (!client.isConnected()) return {
230
- error: ERRORS.notAuthorize()
231
- };
232
- const address = onAccount || client.currentAccount;
233
-
234
- if (!client.hasAccessToAccount(address)) {
235
- return {
236
- error: ERRORS.permissionDeny({
237
- account: address
238
- })
239
- };
240
- }
241
-
242
- return callInstance('onMessageSign', {
243
- message,
244
- onAccount: address
245
- }, async function () {
246
- let opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
247
-
248
- try {
249
- const onAcc = resolveOnAccount(instance.addresses(), address, opt);
250
- return {
251
- result: {
252
- signature: await instance.signMessage(message, {
253
- onAccount: onAcc,
254
- returnHex: true
255
- })
256
- }
257
- };
258
- } catch (e) {
259
- if (instance.debug) console.error(e);
260
- return {
261
- error: ERRORS.internalError({
262
- msg: e.message
263
- })
264
- };
265
- }
266
- }, error => ({
267
- error: ERRORS.rejectedByUser(error)
268
- }));
269
- }
270
-
271
- };
272
-
273
- const handleMessage = (instance, id) => async (msg, origin) => {
274
- const client = instance.rpcClients[id];
275
-
276
- if (!msg.id) {
277
- return getHandler(NOTIFICATIONS, msg, {
278
- debug: instance.debug
279
- })(instance, {
280
- client
281
- })(msg, origin);
282
- }
283
-
284
- if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {
285
- return getHandler(RESPONSES, msg, {
286
- debug: instance.debug
287
- })(instance, {
288
- client
289
- })(msg, origin);
290
- } else {
291
- const {
292
- id,
293
- method
294
- } = msg;
295
-
296
- const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {
297
- instance[methodName](client, {
298
- id,
299
- method,
300
- params,
301
- accept: function () {
302
- return resolve(accept(...arguments));
303
- },
304
- deny: function () {
305
- return resolve(deny(...arguments));
306
- }
307
- }, origin);
308
- }); // TODO make one structure for handler functions
309
-
310
-
311
- const errorObjectOrHandler = getHandler(REQUESTS, msg, {
312
- debug: instance.debug
313
- })(callInstance, instance, client, msg.params);
314
- const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler;
315
- sendResponseMessage(client)(id, method, response);
316
- }
317
- };
318
- /**
319
- * Contain functionality for aepp interaction and managing multiple aepps
320
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc
321
- * @function
322
- * @rtype Stamp
323
- * @param {Object} param Init params object
324
- * @param {String=} [param.name] Wallet name
325
- * @param {Function} onConnection Call-back function for incoming AEPP connection
326
- * @param {Function} onSubscription Call-back function for incoming AEPP account subscription
327
- * @param {Function} onSign Call-back function for incoming AEPP sign request
328
- * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request
329
- * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request
330
- * Second argument of incoming call-backs contain function for accept/deny request
331
- * @param {Function} onDisconnect Call-back function for disconnect event
332
- * @return {Object}
333
- */
334
-
335
-
336
- export default Ae.compose(AccountMultiple, {
337
- init() {
338
- var _this = this;
339
-
340
- let {
341
- name,
342
- onConnection,
343
- onSubscription,
344
- onSign,
345
- onDisconnect,
346
- onAskAccounts,
347
- onMessageSign,
348
- forceValidation = false,
349
- debug = false
350
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
351
- this.debug = debug;
352
- const eventsHandlers = ['onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onMessageSign']; // CallBacks for events
353
-
354
- this.onConnection = onConnection;
355
- this.onSubscription = onSubscription;
356
- this.onSign = onSign;
357
- this.onDisconnect = onDisconnect;
358
- this.onAskAccounts = onAskAccounts;
359
- this.onMessageSign = onMessageSign;
360
- this.rpcClients = {};
361
- eventsHandlers.forEach(event => {
362
- if (!forceValidation && typeof this[event] !== 'function') {
363
- throw new Error(`Call-back for ${event} must be an function!`);
364
- }
365
- }); //
366
-
367
- this.name = name;
368
- this.id = uuid();
369
-
370
- const _selectAccount = this.selectAccount.bind(this);
371
-
372
- const _addAccount = this.addAccount.bind(this);
373
-
374
- const _selectNode = this.selectNode.bind(this); // Overwrite AE methods
375
-
376
-
377
- this.selectAccount = function (address) {
378
- let {
379
- condition = () => true
380
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
381
-
382
- _selectAccount(address);
383
-
384
- Object.values(_this.rpcClients).filter(client => client.isConnected() && client.isSubscribed() && client.hasAccessToAccount(address) && condition(client)).forEach(client => client.setAccounts({
385
- current: {
386
- [address]: {}
387
- },
388
- connected: { ...client.accounts.current,
389
- ...Object.entries(client.accounts.connected).filter(_ref5 => {
390
- let [k, v] = _ref5;
391
- return k !== address;
392
- }).reduce((acc, _ref6) => {
393
- let [k, v] = _ref6;
394
- return { ...acc,
395
- [k]: v
396
- };
397
- }, {})
398
- }
399
- }));
400
- };
401
-
402
- this.addAccount = async function (account) {
403
- let {
404
- select,
405
- meta = {},
406
- condition = () => true
407
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
408
- await _addAccount(account, {
409
- select
410
- });
411
- const address = await account.address(); // Send notification 'update.address' to all Aepp which are subscribed for connected accounts
412
-
413
- Object.values(_this.rpcClients).filter(client => client.isConnected() && client.isSubscribed() && condition(client)).forEach(client => client.setAccounts({
414
- current: { ...(select ? {
415
- [address]: meta
416
- } : client.accounts.current)
417
- },
418
- connected: { ...(select ? client.accounts.current : {
419
- [address]: meta
420
- }),
421
- ...client.accounts.connected
422
- }
423
- }));
424
- };
425
-
426
- this.selectNode = name => {
427
- _selectNode(name); // Send notification 'update.network' to all Aepp which connected
428
-
429
-
430
- Object.values(this.rpcClients).filter(client => client.isConnected()).forEach(client => client.sendMessage(message(METHODS.updateNetwork, {
431
- networkId: this.getNetworkId()
432
- }), true));
433
- };
434
- },
435
-
436
- methods: {
437
- /**
438
- * Remove specific RpcClient by ID
439
- * @function removeRpcClient
440
- * @instance
441
- * @rtype (id: string) => void
442
- * @param {String} id Client ID
443
- * @param {Object} [opt = {}]
444
- * @return {void}
445
- */
446
- removeRpcClient(id) {
447
- let {
448
- forceConnectionClose = false
449
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
450
- const client = this.rpcClients[id];
451
- if (!client) throw new Error(`RpcClient with id ${id} do not exist`);
452
- client.disconnect(forceConnectionClose);
453
- delete this.rpcClients[id];
454
- },
455
-
456
- /**
457
- * Add new client by AEPP connection
458
- * @function addRpcClient
459
- * @instance
460
- * @rtype (clientConnection: Object) => Object
461
- * @param {Object} clientConnection AEPP connection object
462
- * @return {String} Client ID
463
- */
464
- addRpcClient(clientConnection) {
465
- // @TODO detect if aepp has some history based on origin????
466
- // if yes use this instance for connection
467
- const id = uuid();
468
- this.rpcClients[id] = RpcClient({
469
- id,
470
- info: {
471
- status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST
472
- },
473
- connection: clientConnection,
474
- handlers: [handleMessage(this, id), this.onDisconnect]
475
- });
476
- return id;
477
- },
478
-
479
- /**
480
- * Share wallet info
481
- * Send shareWalletInfo message to notify AEPP about wallet
482
- * @function shareWalletInfo
483
- * @instance
484
- * @rtype (postFn: Function) => void
485
- * @param {Function} postFn Send message function like `(msg) => void`
486
- * @return {void}
487
- */
488
- shareWalletInfo(postFn) {
489
- postFn({
490
- jsonrpc: '2.0',
491
- ...message(METHODS.wallet.readyToConnect, this.getWalletInfo())
492
- });
493
- },
494
-
495
- /**
496
- * Get Wallet info object
497
- * @function getWalletInfo
498
- * @instance
499
- * @rtype () => Object
500
- * @return {Object} Object with wallet information(id, name, network, ...)
501
- */
502
- getWalletInfo() {
503
- const runtime = getBrowserAPI(true).runtime;
504
- return {
505
- id: runtime && runtime.id ? runtime.id : this.id,
506
- name: this.name,
507
- networkId: this.getNetworkId(),
508
- origin: window.location.origin,
509
- type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window
510
- };
511
- },
512
-
513
- /**
514
- * Get Wallet accounts
515
- * @function getAccounts
516
- * @instance
517
- * @rtype () => Object
518
- * @return {Object} Object with accounts information({ connected: Object, current: Object })
519
- */
520
- getAccounts() {
521
- return {
522
- current: this.selectedAddress ? {
523
- [this.selectedAddress]: {}
524
- } : {},
525
- connected: this.addresses().filter(a => a !== this.selectedAddress).reduce((acc, a) => ({ ...acc,
526
- [a]: {}
527
- }), {})
528
- };
529
- }
530
-
531
- }
532
- });
533
- //# sourceMappingURL=wallet-rpc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/wallet-rpc.js"],"names":["v4","uuid","Ae","verifyTransaction","AccountMultiple","TxObject","RpcClient","getBrowserAPI","getHandler","isValidAccounts","message","resolveOnAccount","sendResponseMessage","ERRORS","METHODS","RPC_STATUS","VERSION","WALLET_TYPE","NOTIFICATIONS","closeConnection","instance","client","msg","disconnect","onDisconnect","params","RESPONSES","REQUESTS","aepp","connect","callInstance","name","networkId","version","icons","error","unsupportedProtocol","updateInfo","status","WAITING_FOR_CONNECTION_APPROVE","CONNECTED","result","getWalletInfo","CONNECTION_REJECTED","connectionDeny","subscribeAddress","type","value","isConnected","notAuthorize","accounts","clientAccounts","getAccounts","Error","subscription","updateSubscription","setAccounts","forceNotification","address","e","debug","console","internalError","rejectedByUser","isSubscribed","Object","keys","current","connected","sign","options","tx","onAccount","returnSigned","currentAccount","hasAccessToAccount","permissionDeny","account","getNetworkId","unsupportedNetwork","txObject","fromString","rawTx","opt","onAcc","addresses","t","signedTransaction","signTransaction","transactionHash","send","verify","validation","selectedNode","length","invalidTransaction","broadcastFailed","signMessage","signature","returnHex","handleMessage","id","origin","rpcClients","prototype","hasOwnProperty","call","callbacks","method","methodName","accept","deny","Promise","resolve","errorObjectOrHandler","response","compose","init","onConnection","onSubscription","onSign","onAskAccounts","onMessageSign","forceValidation","eventsHandlers","forEach","event","_selectAccount","selectAccount","bind","_addAccount","addAccount","_selectNode","selectNode","condition","values","filter","entries","k","v","reduce","acc","select","meta","sendMessage","updateNetwork","methods","removeRpcClient","forceConnectionClose","addRpcClient","clientConnection","info","WAITING_FOR_CONNECTION_REQUEST","connection","handlers","shareWalletInfo","postFn","jsonrpc","wallet","readyToConnect","runtime","window","location","extension","selectedAddress","a"],"mappings":"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","sourcesContent":["/**\n * RPC handler for WAELLET side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @export WalletRpc\n * @example\n * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'\n */\nimport { v4 as uuid } from 'uuid'\nimport Ae from '../../../ae'\nimport verifyTransaction from '../../../tx/validator'\nimport AccountMultiple from '../../../account/multiple'\nimport TxObject from '../../../tx/tx-object'\nimport RpcClient from './rpc-client'\nimport { getBrowserAPI, getHandler, isValidAccounts, message, resolveOnAccount, sendResponseMessage } from '../helpers'\nimport { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.closeConnection]: (instance, { client }) =>\n async (msg) => {\n client.disconnect(true)\n instance.onDisconnect(msg.params, client)\n }\n}\n\nconst RESPONSES = {}\n\nconst REQUESTS = {\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.aepp.connect] (callInstance, instance, client, { name, networkId, version, icons }) {\n // Check if protocol and network is compatible with wallet\n if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }\n\n // Store new AEPP and wait for connection approve\n client.updateInfo({\n status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,\n name,\n networkId,\n icons,\n version\n })\n\n // Call onConnection callBack to notice Wallet about new AEPP\n return callInstance(\n 'onConnection',\n { name, networkId, version },\n () => {\n client.updateInfo({ status: RPC_STATUS.CONNECTED })\n return { result: instance.getWalletInfo() }\n },\n (error) => {\n client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })\n return { error: ERRORS.connectionDeny(error) }\n }\n )\n },\n [METHODS.aepp.subscribeAddress] (callInstance, instance, client, { type, value }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onSubscription',\n { type, value },\n async ({ accounts } = {}) => {\n try {\n const clientAccounts = accounts || instance.getAccounts()\n if (!isValidAccounts(clientAccounts)) throw new Error('Invalid provided accounts object')\n const subscription = client.updateSubscription(type, value)\n client.setAccounts(clientAccounts, { forceNotification: true })\n return {\n result: {\n subscription,\n address: clientAccounts\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.address] (callInstance, instance, client) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onAskAccounts',\n {},\n ({ accounts } = {}) => ({\n result: accounts ||\n [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]\n }),\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.sign] (callInstance, instance, client, options) {\n const { tx, onAccount, networkId, returnSigned = false } = options\n const address = onAccount || client.currentAccount\n // Update client with new networkId\n networkId && client.updateInfo({ networkId })\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n // Account permission check\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny({ account: address }) }\n }\n // NetworkId check\n if (!networkId || networkId !== instance.getNetworkId()) {\n return { error: ERRORS.unsupportedNetwork() }\n }\n\n return callInstance(\n 'onSign',\n { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },\n async (rawTx, opt = {}) => {\n let onAcc\n try {\n onAcc = resolveOnAccount(instance.addresses(), address, opt)\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n try {\n const t = rawTx || tx\n const result = returnSigned\n ? { signedTransaction: await instance.signTransaction(t, { onAccount: onAcc }) }\n : { transactionHash: await instance.send(t, { onAccount: onAcc, verify: false }) }\n return { result }\n } catch (e) {\n if (!returnSigned) {\n // Validate transaction\n const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)\n if (validation.length) return { error: ERRORS.invalidTransaction(validation) }\n // Send broadcast failed error to aepp\n return { error: ERRORS.broadcastFailed(e.message) }\n }\n throw e\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.signMessage] (callInstance, instance, client, { message, onAccount }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n const address = onAccount || client.currentAccount\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny({ account: address }) }\n }\n\n return callInstance(\n 'onMessageSign',\n { message, onAccount: address },\n async (opt = {}) => {\n try {\n const onAcc = resolveOnAccount(instance.addresses(), address, opt)\n return {\n result: {\n signature: await instance.signMessage(message, {\n onAccount: onAcc,\n returnHex: true\n })\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n }\n}\n\nconst handleMessage = (instance, id) => async (msg, origin) => {\n const client = instance.rpcClients[id]\n if (!msg.id) {\n return getHandler(\n NOTIFICATIONS, msg, { debug: instance.debug }\n )(instance, { client })(msg, origin)\n }\n if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n } else {\n const { id, method } = msg\n const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {\n instance[methodName](\n client,\n {\n id,\n method,\n params,\n accept: (...args) => resolve(accept(...args)),\n deny: (...args) => resolve(deny(...args))\n },\n origin\n )\n })\n // TODO make one structure for handler functions\n const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(\n callInstance, instance, client, msg.params\n )\n const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler\n sendResponseMessage(client)(id, method, response)\n }\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Wallet name\n * @param {Function} onConnection Call-back function for incoming AEPP connection\n * @param {Function} onSubscription Call-back function for incoming AEPP account subscription\n * @param {Function} onSign Call-back function for incoming AEPP sign request\n * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request\n * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request\n * Second argument of incoming call-backs contain function for accept/deny request\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @return {Object}\n */\nexport default Ae.compose(AccountMultiple, {\n init ({\n name,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n forceValidation = false,\n debug = false\n } = {}) {\n this.debug = debug\n const eventsHandlers = [\n 'onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onMessageSign'\n ]\n // CallBacks for events\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.rpcClients = {}\n\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') {\n throw new Error(`Call-back for ${event} must be an function!`)\n }\n })\n //\n this.name = name\n this.id = uuid()\n\n const _selectAccount = this.selectAccount.bind(this)\n const _addAccount = this.addAccount.bind(this)\n const _selectNode = this.selectNode.bind(this)\n\n // Overwrite AE methods\n this.selectAccount = (address, { condition = () => true } = {}) => {\n _selectAccount(address)\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() &&\n client.hasAccessToAccount(address) && condition(client))\n .forEach(client => client.setAccounts({\n current: { [address]: {} },\n connected: {\n ...client.accounts.current,\n ...Object.entries(client.accounts.connected)\n .filter(([k, v]) => k !== address)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n }\n }))\n }\n this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {\n await _addAccount(account, { select })\n const address = await account.address()\n // Send notification 'update.address' to all Aepp which are subscribed for connected accounts\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() && condition(client))\n .forEach(client => client.setAccounts({\n current: { ...select ? { [address]: meta } : client.accounts.current },\n connected: {\n ...select ? client.accounts.current : { [address]: meta },\n ...client.accounts.connected\n }\n }))\n }\n this.selectNode = (name) => {\n _selectNode(name)\n // Send notification 'update.network' to all Aepp which connected\n Object.values(this.rpcClients)\n .filter(client => client.isConnected())\n .forEach(client => client.sendMessage(\n message(METHODS.updateNetwork, { networkId: this.getNetworkId() }), true\n ))\n }\n },\n methods: {\n /**\n * Remove specific RpcClient by ID\n * @function removeRpcClient\n * @instance\n * @rtype (id: string) => void\n * @param {String} id Client ID\n * @param {Object} [opt = {}]\n * @return {void}\n */\n removeRpcClient (id, { forceConnectionClose = false } = {}) {\n const client = this.rpcClients[id]\n if (!client) throw new Error(`RpcClient with id ${id} do not exist`)\n client.disconnect(forceConnectionClose)\n delete this.rpcClients[id]\n },\n /**\n * Add new client by AEPP connection\n * @function addRpcClient\n * @instance\n * @rtype (clientConnection: Object) => Object\n * @param {Object} clientConnection AEPP connection object\n * @return {String} Client ID\n */\n addRpcClient (clientConnection) {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n this.rpcClients[id] = RpcClient({\n id,\n info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },\n connection: clientConnection,\n handlers: [handleMessage(this, id), this.onDisconnect]\n })\n return id\n },\n /**\n * Share wallet info\n * Send shareWalletInfo message to notify AEPP about wallet\n * @function shareWalletInfo\n * @instance\n * @rtype (postFn: Function) => void\n * @param {Function} postFn Send message function like `(msg) => void`\n * @return {void}\n */\n shareWalletInfo (postFn) {\n postFn({\n jsonrpc: '2.0',\n ...message(METHODS.wallet.readyToConnect, this.getWalletInfo())\n })\n },\n /**\n * Get Wallet info object\n * @function getWalletInfo\n * @instance\n * @rtype () => Object\n * @return {Object} Object with wallet information(id, name, network, ...)\n */\n getWalletInfo () {\n const runtime = getBrowserAPI(true).runtime\n return {\n id: runtime && runtime.id ? runtime.id : this.id,\n name: this.name,\n networkId: this.getNetworkId(),\n origin: window.location.origin,\n type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window\n }\n },\n /**\n * Get Wallet accounts\n * @function getAccounts\n * @instance\n * @rtype () => Object\n * @return {Object} Object with accounts information({ connected: Object, current: Object })\n */\n getAccounts () {\n return {\n current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter(a => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n }\n})\n"],"file":"wallet-rpc.js"}