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