@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
@@ -15,8 +15,9 @@
15
15
  * PERFORMANCE OF THIS SOFTWARE.
16
16
  */
17
17
 
18
- import { generateKeyPair, encodeContractAddress, encodeBase64Check } from '../utils/crypto'
18
+ import { generateKeyPair, encodeContractAddress } from '../utils/crypto'
19
19
  import {
20
+ ChannelState,
20
21
  options,
21
22
  changeStatus,
22
23
  changeState,
@@ -25,44 +26,60 @@ import {
25
26
  emit,
26
27
  channelId,
27
28
  disconnect,
28
- fsmId
29
+ fsmId,
30
+ ChannelMessage,
31
+ ChannelFsm,
32
+ SignTx
29
33
  } from './internal'
30
34
  import { unpackTx, buildTx } from '../tx/builder'
35
+ import { encode } from '../tx/builder/helpers'
36
+ import { EncodedData } from '../utils/encoder'
37
+ import {
38
+ IllegalArgumentError,
39
+ InsufficientBalanceError,
40
+ ChannelConnectionError,
41
+ UnexpectedChannelMessageError
42
+ } from '../utils/errors'
43
+ import Channel from '.'
44
+ import { TX_TYPE } from '../tx/builder/schema'
31
45
 
32
- function encodeRlpTx (rlpBinary) {
33
- return `tx_${encodeBase64Check(rlpBinary)}`
34
- }
35
-
36
- async function appendSignature (tx, signFn) {
37
- const { signatures, encodedTx } = unpackTx(tx).tx
38
- const result = await signFn(encodeRlpTx(encodedTx.rlpEncoded))
46
+ export async function appendSignature (
47
+ tx: EncodedData<'tx'>, signFn: SignTx
48
+ ): Promise<EncodedData<'tx'> | number | null> {
49
+ const { signatures, encodedTx } = unpackTx(tx, TX_TYPE.signed).tx
50
+ const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'))
39
51
  if (typeof result === 'string') {
40
- const { tx: signedTx, txType } = unpackTx(result)
41
- return encodeRlpTx(buildTx({
52
+ const { tx: signedTx } = unpackTx(result, TX_TYPE.signed)
53
+ return buildTx({
42
54
  signatures: signatures.concat(signedTx.signatures),
43
55
  encodedTx: signedTx.encodedTx.rlpEncoded
44
- }, txType).rlpEncoded)
56
+ }, TX_TYPE.signed).tx
45
57
  }
46
58
  return result
47
59
  }
48
60
 
49
- function handleUnexpectedMessage (channel, message, state) {
50
- if (state && state.reject) {
61
+ function handleUnexpectedMessage (
62
+ _channel: Channel, message: ChannelMessage, state: ChannelState
63
+ ): ChannelFsm {
64
+ if (state?.reject != null) {
51
65
  state.reject(Object.assign(
52
- new Error(`Unexpected message received:\n\n${JSON.stringify(message)}`),
66
+ new UnexpectedChannelMessageError(`Unexpected message received:\n\n${JSON.stringify(message)}`),
53
67
  { wsMessage: message }
54
68
  ))
55
69
  }
56
70
  return { handler: channelOpen }
57
71
  }
58
72
 
59
- export function awaitingConnection (channel, message, state) {
73
+ export function awaitingConnection (
74
+ channel: Channel, message: ChannelMessage
75
+ ): ChannelFsm | undefined {
60
76
  if (message.method === 'channels.info') {
61
- if (['channel_accept', 'funding_created'].includes(message.params.data.event)) {
77
+ const channelInfoStatus: string = message.params.data.event
78
+ if (['channel_accept', 'funding_created'].includes(channelInfoStatus)) {
62
79
  changeStatus(channel, {
63
80
  channel_accept: 'accepted',
64
81
  funding_created: 'halfSigned'
65
- }[message.params.data.event])
82
+ }[channelInfoStatus as 'channel_accept' | 'funding_created'])
66
83
  return { handler: awaitingChannelCreateTx }
67
84
  }
68
85
  if (message.params.data.event === 'channel_reestablished') {
@@ -75,12 +92,14 @@ export function awaitingConnection (channel, message, state) {
75
92
  return { handler: awaitingConnection }
76
93
  }
77
94
  if (message.method === 'channels.error') {
78
- emit(channel, 'error', new Error(message.payload.message))
95
+ emit(channel, 'error', new ChannelConnectionError(message?.payload?.message))
79
96
  return { handler: channelClosed }
80
97
  }
81
98
  }
82
99
 
83
- export async function awaitingReconnection (channel, message, state) {
100
+ export async function awaitingReconnection (
101
+ channel: Channel, message: ChannelMessage, state: ChannelState
102
+ ): Promise<ChannelFsm> {
84
103
  if (message.method === 'channels.info') {
85
104
  if (message.params.data.event === 'fsm_up') {
86
105
  fsmId.set(channel, message.params.data.fsm_id)
@@ -91,59 +110,74 @@ export async function awaitingReconnection (channel, message, state) {
91
110
  return handleUnexpectedMessage(channel, message, state)
92
111
  }
93
112
 
94
- export async function awaitingChannelCreateTx (channel, message, state) {
95
- const tag = {
96
- initiator: 'initiator_sign',
97
- responder: 'responder_sign'
98
- }[options.get(channel).role]
99
- if (message.method === `channels.sign.${tag}`) {
100
- if (message.params.data.tx) {
101
- const signedTx = await options.get(channel).sign(tag, message.params.data.tx)
102
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })
113
+ export async function awaitingChannelCreateTx (
114
+ channel: Channel, message: ChannelMessage
115
+ ): Promise<ChannelFsm | undefined> {
116
+ const channelOptions = options.get(channel)
117
+ if (channelOptions != null) {
118
+ const tag = {
119
+ initiator: 'initiator_sign',
120
+ responder: 'responder_sign'
121
+ }[channelOptions.role]
122
+ if (message.method === `channels.sign.${tag}`) {
123
+ if (message.params.data.tx != null) {
124
+ const signedTx = await channelOptions.sign(tag, message.params.data.tx)
125
+ send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })
126
+ return { handler: awaitingOnChainTx }
127
+ }
128
+ const signedTx = await appendSignature(
129
+ message.params.data.signed_tx, async tx => await channelOptions.sign(tag, tx)
130
+ )
131
+ send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
103
132
  return { handler: awaitingOnChainTx }
104
133
  }
105
- const signedTx = await appendSignature(
106
- message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx)
107
- )
108
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
109
- return { handler: awaitingOnChainTx }
110
134
  }
111
135
  }
112
136
 
113
- export function awaitingOnChainTx (channel, message, state) {
114
- if (message.method === 'channels.on_chain_tx') {
115
- if (
116
- message.params.data.info === 'funding_signed' &&
117
- options.get(channel).role === 'initiator'
118
- ) {
119
- return { handler: awaitingBlockInclusion }
137
+ export function awaitingOnChainTx (
138
+ channel: Channel, message: ChannelMessage
139
+ ): ChannelFsm | undefined {
140
+ const channelOptions = options.get(channel)
141
+ if (channelOptions != null) {
142
+ if (message.method === 'channels.on_chain_tx') {
143
+ if (
144
+ message.params.data.info === 'funding_signed' &&
145
+ channelOptions.role === 'initiator'
146
+ ) {
147
+ return { handler: awaitingBlockInclusion }
148
+ }
149
+ if (
150
+ message.params.data.info === 'funding_created' &&
151
+ channelOptions.role === 'responder'
152
+ ) {
153
+ return { handler: awaitingBlockInclusion }
154
+ }
120
155
  }
121
156
  if (
122
- message.params.data.info === 'funding_created' &&
123
- options.get(channel).role === 'responder'
157
+ message.method === 'channels.info' &&
158
+ message.params.data.event === 'funding_signed' &&
159
+ channelOptions.role === 'initiator'
124
160
  ) {
125
- return { handler: awaitingBlockInclusion }
161
+ channelId.set(channel, message.params.channel_id)
162
+ changeStatus(channel, 'signed')
163
+ return { handler: awaitingOnChainTx }
126
164
  }
127
165
  }
128
- if (
129
- message.method === 'channels.info' &&
130
- message.params.data.event === 'funding_signed' &&
131
- options.get(channel).role === 'initiator'
132
- ) {
133
- channelId.set(channel, message.params.channel_id)
134
- changeStatus(channel, 'signed')
135
- return { handler: awaitingOnChainTx }
136
- }
137
166
  }
138
167
 
139
- export function awaitingBlockInclusion (channel, message, state) {
168
+ export function awaitingBlockInclusion (
169
+ channel: Channel, message: ChannelMessage
170
+ ): ChannelFsm | undefined {
140
171
  if (message.method === 'channels.info') {
141
- const handler = {
172
+ const handlers: {
173
+ [key: string]: (channel: Channel, message: ChannelMessage) => ChannelFsm | undefined
174
+ } = {
142
175
  funding_created: awaitingBlockInclusion,
143
176
  own_funding_locked: awaitingBlockInclusion,
144
177
  funding_locked: awaitingOpenConfirmation
145
- }[message.params.data.event]
146
- if (handler) {
178
+ }
179
+ const handler = handlers[message.params.data.event as string]
180
+ if (handler != null) {
147
181
  return { handler }
148
182
  }
149
183
  }
@@ -156,21 +190,27 @@ export function awaitingBlockInclusion (channel, message, state) {
156
190
  }
157
191
  }
158
192
 
159
- export function awaitingOpenConfirmation (channel, message, state) {
193
+ export function awaitingOpenConfirmation (
194
+ channel: Channel, message: ChannelMessage
195
+ ): ChannelFsm | undefined {
160
196
  if (message.method === 'channels.info' && message.params.data.event === 'open') {
161
197
  channelId.set(channel, message.params.channel_id)
162
198
  return { handler: awaitingInitialState }
163
199
  }
164
200
  }
165
201
 
166
- export function awaitingInitialState (channel, message, state) {
202
+ export function awaitingInitialState (
203
+ channel: Channel, message: ChannelMessage
204
+ ): ChannelFsm | undefined {
167
205
  if (message.method === 'channels.update') {
168
206
  changeState(channel, message.params.data.state)
169
207
  return { handler: channelOpen }
170
208
  }
171
209
  }
172
210
 
173
- export async function channelOpen (channel, message, state) {
211
+ export async function channelOpen (
212
+ channel: Channel, message: ChannelMessage, state: ChannelState
213
+ ): Promise<ChannelFsm | undefined> {
174
214
  switch (message.method) {
175
215
  case 'channels.info':
176
216
  switch (message.params.data.event) {
@@ -223,23 +263,26 @@ export async function channelOpen (channel, message, state) {
223
263
  changeState(channel, message.params.data.state)
224
264
  return { handler: channelOpen }
225
265
  case 'channels.sign.shutdown_sign_ack':
226
- return awaitingTxSignRequest(channel, message, state)
266
+ return await awaitingTxSignRequest(channel, message, state)
227
267
  }
228
268
  }
229
- channelOpen.enter = (channel) => {
269
+ channelOpen.enter = (channel: Channel) => {
230
270
  changeStatus(channel, 'open')
231
271
  }
232
272
 
233
- export async function awaitingOffChainTx (channel, message, state) {
273
+ export async function awaitingOffChainTx (
274
+ channel: Channel, message: ChannelMessage, state: ChannelState
275
+ ): Promise<ChannelFsm> {
234
276
  if (message.method === 'channels.sign.update') {
235
277
  const { sign } = state
236
- if (message.params.data.tx) {
237
- const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })
278
+ if (message.params.data.tx != null) {
279
+ const signedTx =
280
+ await sign(message.params.data.tx, { updates: message.params.data.updates })
238
281
  send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })
239
282
  return { handler: awaitingOffChainUpdate, state }
240
283
  }
241
- const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
242
- sign(tx, { updates: message.params.data.updates })
284
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
285
+ await sign(tx, { updates: message.params.data.updates })
243
286
  )
244
287
  if (typeof signedTx === 'string') {
245
288
  send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
@@ -251,17 +294,17 @@ export async function awaitingOffChainTx (channel, message, state) {
251
294
  }
252
295
  }
253
296
  if (message.method === 'channels.error') {
254
- state.reject(new Error(message.data.message))
297
+ state.reject(new ChannelConnectionError(message.data.message))
255
298
  return { handler: channelOpen }
256
299
  }
257
- if (message.error) {
258
- const { data = [] } = message.error
259
- if (data.find(i => i.code === 1001)) {
260
- state.reject(new Error('Insufficient balance'))
261
- } else if (data.find(i => i.code === 1002)) {
262
- state.reject(new Error('Amount cannot be negative'))
300
+ if (message.error != null) {
301
+ const { data } = message.error ?? { data: [] }
302
+ if (data.find(i => i.code === 1001) != null) {
303
+ state.reject(new InsufficientBalanceError('Insufficient balance'))
304
+ } else if (data.find(i => i.code === 1002) != null) {
305
+ state.reject(new IllegalArgumentError('Amount cannot be negative'))
263
306
  } else {
264
- state.reject(new Error(message.error.message))
307
+ state.reject(new ChannelConnectionError(message.error.message))
265
308
  }
266
309
  return { handler: channelOpen }
267
310
  }
@@ -282,7 +325,9 @@ export async function awaitingOffChainTx (channel, message, state) {
282
325
  return handleUnexpectedMessage(channel, message, state)
283
326
  }
284
327
 
285
- export function awaitingOffChainUpdate (channel, message, state) {
328
+ export function awaitingOffChainUpdate (
329
+ channel: Channel, message: ChannelMessage, state: ChannelState
330
+ ): ChannelFsm | undefined {
286
331
  if (message.method === 'channels.update') {
287
332
  changeState(channel, message.params.data.state)
288
333
  state.resolve({ accepted: true, signedTx: message.params.data.state })
@@ -302,27 +347,30 @@ export function awaitingOffChainUpdate (channel, message, state) {
302
347
  return { handler: channelOpen }
303
348
  }
304
349
  }
305
- if (message.error) {
306
- state.reject(new Error(message.error.message))
350
+ if (message.error != null) {
351
+ state.reject(new ChannelConnectionError(message.error.message))
307
352
  return { handler: channelOpen }
308
353
  }
309
354
  return handleUnexpectedMessage(channel, message, state)
310
355
  }
311
356
 
312
- export async function awaitingTxSignRequest (channel, message, state) {
313
- const [, tag] = message.method.match(/^channels\.sign\.([^.]+)$/) || []
314
- if (tag) {
315
- if (message.params.data.tx) {
316
- const signedTx = await options.get(channel).sign(tag, message.params.data.tx, {
357
+ export async function awaitingTxSignRequest (
358
+ channel: Channel, message: ChannelMessage, state: ChannelState
359
+ ): Promise<ChannelFsm | undefined> {
360
+ const [, tag] = message.method.match(/^channels\.sign\.([^.]+)$/) ?? []
361
+ const channelOptions = options.get(channel)
362
+ if (tag != null && (channelOptions != null)) {
363
+ if (message.params.data.tx != null) {
364
+ const signedTx = await channelOptions.sign(tag, message.params.data.tx, {
317
365
  updates: message.params.data.updates
318
366
  })
319
- if (signedTx) {
367
+ if (signedTx != null) {
320
368
  send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })
321
369
  return { handler: channelOpen }
322
370
  }
323
371
  } else {
324
- const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
325
- options.get(channel).sign(tag, tx, { updates: message.params.data.updates })
372
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
373
+ await channelOptions.sign(tag, tx, { updates: message.params.data.updates })
326
374
  )
327
375
  if (typeof signedTx === 'string') {
328
376
  send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
@@ -348,8 +396,10 @@ export async function awaitingTxSignRequest (channel, message, state) {
348
396
  return handleUnexpectedMessage(channel, message, state)
349
397
  }
350
398
 
351
- export function awaitingUpdateConflict (channel, message, state) {
352
- if (message.error) {
399
+ export function awaitingUpdateConflict (
400
+ channel: Channel, message: ChannelMessage, state: ChannelState
401
+ ): ChannelFsm {
402
+ if (message.error != null) {
353
403
  return { handler: awaitingUpdateConflict, state }
354
404
  }
355
405
  if (message.method === 'channels.conflict') {
@@ -358,21 +408,26 @@ export function awaitingUpdateConflict (channel, message, state) {
358
408
  return handleUnexpectedMessage(channel, message, state)
359
409
  }
360
410
 
361
- export async function awaitingShutdownTx (channel, message, state) {
411
+ export async function awaitingShutdownTx (
412
+ channel: Channel, message: ChannelMessage, state: ChannelState
413
+ ): Promise<ChannelFsm | undefined> {
362
414
  if (message.method === 'channels.sign.shutdown_sign') {
363
- if (message.params.data.tx) {
415
+ if (message.params.data.tx != null) {
364
416
  const signedTx = await state.sign(message.params.data.tx)
365
417
  send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })
366
418
  return { handler: awaitingShutdownOnChainTx, state }
367
419
  }
368
- const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))
420
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
421
+ await state.sign(tx))
369
422
  send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })
370
423
  return { handler: awaitingShutdownOnChainTx, state }
371
424
  }
372
425
  return handleUnexpectedMessage(channel, message, state)
373
426
  }
374
427
 
375
- export function awaitingShutdownOnChainTx (channel, message, state) {
428
+ export function awaitingShutdownOnChainTx (
429
+ channel: Channel, message: ChannelMessage, state: ChannelState
430
+ ): ChannelFsm {
376
431
  if (message.method === 'channels.on_chain_tx') {
377
432
  // state.resolve(message.params.data.tx)
378
433
  return { handler: channelClosed, state }
@@ -380,29 +435,34 @@ export function awaitingShutdownOnChainTx (channel, message, state) {
380
435
  return handleUnexpectedMessage(channel, message, state)
381
436
  }
382
437
 
383
- export function awaitingLeave (channel, message, state) {
438
+ export function awaitingLeave (
439
+ channel: Channel, message: ChannelMessage, state: ChannelState
440
+ ): ChannelFsm {
384
441
  if (message.method === 'channels.leave') {
385
442
  state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })
386
443
  disconnect(channel)
387
444
  return { handler: channelClosed }
388
445
  }
389
446
  if (message.method === 'channels.error') {
390
- state.reject(new Error(message.data.message))
447
+ state.reject(new ChannelConnectionError(message.data.message))
391
448
  return { handler: channelOpen }
392
449
  }
393
450
  return handleUnexpectedMessage(channel, message, state)
394
451
  }
395
452
 
396
- export async function awaitingWithdrawTx (channel, message, state) {
453
+ export async function awaitingWithdrawTx (
454
+ channel: Channel, message: ChannelMessage, state: ChannelState
455
+ ): Promise<ChannelFsm | undefined> {
397
456
  if (message.method === 'channels.sign.withdraw_tx') {
398
457
  const { sign } = state
399
- if (message.params.data.tx) {
400
- const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })
458
+ if (message.params.data.tx != null) {
459
+ const signedTx =
460
+ await sign(message.params.data.tx, { updates: message.params.data.updates })
401
461
  send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })
402
462
  return { handler: awaitingWithdrawCompletion, state }
403
463
  }
404
- const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
405
- sign(tx, { updates: message.params.data.updates })
464
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
465
+ await sign(tx, { updates: message.params.data.updates })
406
466
  )
407
467
  if (typeof signedTx === 'string') {
408
468
  send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })
@@ -416,20 +476,25 @@ export async function awaitingWithdrawTx (channel, message, state) {
416
476
  return handleUnexpectedMessage(channel, message, state)
417
477
  }
418
478
 
419
- export function awaitingWithdrawCompletion (channel, message, state) {
479
+ export function awaitingWithdrawCompletion (
480
+ channel: Channel, message: ChannelMessage, state: ChannelState
481
+ ): ChannelFsm {
420
482
  if (message.method === 'channels.on_chain_tx') {
421
- if (state.onOnChainTx) {
483
+ if (state.onOnChainTx != null) {
422
484
  state.onOnChainTx(message.params.data.tx)
423
485
  }
424
486
  return { handler: awaitingWithdrawCompletion, state }
425
487
  }
426
488
  if (message.method === 'channels.info') {
427
489
  if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {
428
- const callback = {
490
+ const callbacks: {
491
+ [key: string]: Function | undefined
492
+ } = {
429
493
  own_withdraw_locked: state.onOwnWithdrawLocked,
430
494
  withdraw_locked: state.onWithdrawLocked
431
- }[message.params.data.event]
432
- if (callback) {
495
+ }
496
+ const callback = callbacks[message.params.data.event]
497
+ if (callback != null) {
433
498
  callback()
434
499
  }
435
500
  return { handler: awaitingWithdrawCompletion, state }
@@ -457,16 +522,19 @@ export function awaitingWithdrawCompletion (channel, message, state) {
457
522
  return handleUnexpectedMessage(channel, message, state)
458
523
  }
459
524
 
460
- export async function awaitingDepositTx (channel, message, state) {
525
+ export async function awaitingDepositTx (
526
+ channel: Channel, message: ChannelMessage, state: ChannelState
527
+ ): Promise<ChannelFsm | undefined> {
461
528
  if (message.method === 'channels.sign.deposit_tx') {
462
529
  const { sign } = state
463
- if (message.params.data.tx) {
464
- const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })
530
+ if (message.params.data.tx != null) {
531
+ const signedTx = await sign(message.params.data.tx,
532
+ { updates: message.params.data.updates })
465
533
  send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })
466
534
  return { handler: awaitingDepositCompletion, state }
467
535
  }
468
- const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
469
- sign(tx, { updates: message.params.data.updates })
536
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
537
+ await sign(tx, { updates: message.params.data.updates })
470
538
  )
471
539
  if (typeof signedTx === 'string') {
472
540
  send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })
@@ -480,20 +548,25 @@ export async function awaitingDepositTx (channel, message, state) {
480
548
  return handleUnexpectedMessage(channel, message, state)
481
549
  }
482
550
 
483
- export function awaitingDepositCompletion (channel, message, state) {
551
+ export function awaitingDepositCompletion (
552
+ channel: Channel, message: ChannelMessage, state: ChannelState
553
+ ): ChannelFsm {
484
554
  if (message.method === 'channels.on_chain_tx') {
485
- if (state.onOnChainTx) {
555
+ if (state.onOnChainTx != null) {
486
556
  state.onOnChainTx(message.params.data.tx)
487
557
  }
488
558
  return { handler: awaitingDepositCompletion, state }
489
559
  }
490
560
  if (message.method === 'channels.info') {
491
561
  if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {
492
- const callback = {
562
+ const callbacks: {
563
+ [key: string]: Function | undefined
564
+ } = {
493
565
  own_deposit_locked: state.onOwnDepositLocked,
494
566
  deposit_locked: state.onDepositLocked
495
- }[message.params.data.event]
496
- if (callback) {
567
+ }
568
+ const callback = callbacks[message.params.data.event]
569
+ if (callback != null) {
497
570
  callback()
498
571
  }
499
572
  return { handler: awaitingDepositCompletion, state }
@@ -521,14 +594,17 @@ export function awaitingDepositCompletion (channel, message, state) {
521
594
  return handleUnexpectedMessage(channel, message, state)
522
595
  }
523
596
 
524
- export async function awaitingNewContractTx (channel, message, state) {
597
+ export async function awaitingNewContractTx (
598
+ channel: Channel, message: ChannelMessage, state: ChannelState
599
+ ): Promise<ChannelFsm | undefined> {
525
600
  if (message.method === 'channels.sign.update') {
526
- if (message.params.data.tx) {
601
+ if (message.params.data.tx != null) {
527
602
  const signedTx = await state.sign(message.params.data.tx)
528
603
  send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })
529
604
  return { handler: awaitingNewContractCompletion, state }
530
605
  }
531
- const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))
606
+ const signedTx = await appendSignature(message.params.data.signed_tx,
607
+ async tx => await state.sign(tx))
532
608
  if (typeof signedTx === 'string') {
533
609
  send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
534
610
  return { handler: awaitingNewContractCompletion, state }
@@ -541,20 +617,27 @@ export async function awaitingNewContractTx (channel, message, state) {
541
617
  return handleUnexpectedMessage(channel, message, state)
542
618
  }
543
619
 
544
- export function awaitingNewContractCompletion (channel, message, state) {
620
+ export function awaitingNewContractCompletion (
621
+ channel: Channel, message: ChannelMessage, state: ChannelState
622
+ ): ChannelFsm {
623
+ const channelOptions = options.get(channel)
545
624
  if (message.method === 'channels.update') {
546
- const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx
547
- const owner = options.get(channel)[{
548
- initiator: 'initiatorId',
549
- responder: 'responderId'
550
- }[options.get(channel).role]]
551
- changeState(channel, message.params.data.state)
552
- state.resolve({
553
- accepted: true,
554
- address: encodeContractAddress(owner, round),
555
- signedTx: message.params.data.state
556
- })
557
- return { handler: channelOpen }
625
+ const { round } = unpackTx(message.params.data.state, TX_TYPE.signed).tx.encodedTx.tx
626
+ if (channelOptions?.role != null) {
627
+ const role = channelOptions.role === 'initiator'
628
+ ? 'initiatorId'
629
+ : channelOptions.role === 'responder' ? 'responderId' : null
630
+ if (role != null) {
631
+ const owner = channelOptions?.[role]
632
+ changeState(channel, message.params.data.state)
633
+ state.resolve({
634
+ accepted: true,
635
+ address: encodeContractAddress(owner, round),
636
+ signedTx: message.params.data.state
637
+ })
638
+ return { handler: channelOpen }
639
+ }
640
+ }
558
641
  }
559
642
  if (message.method === 'channels.conflict') {
560
643
  state.resolve({
@@ -573,9 +656,11 @@ export function awaitingNewContractCompletion (channel, message, state) {
573
656
  return handleUnexpectedMessage(channel, message, state)
574
657
  }
575
658
 
576
- export async function awaitingCallContractUpdateTx (channel, message, state) {
659
+ export async function awaitingCallContractUpdateTx (
660
+ channel: Channel, message: ChannelMessage, state: ChannelState
661
+ ): Promise<ChannelFsm | undefined> {
577
662
  if (message.method === 'channels.sign.update') {
578
- if (message.params.data.tx) {
663
+ if (message.params.data.tx != null) {
579
664
  const signedTx = await state.sign(
580
665
  message.params.data.tx, { updates: message.params.data.updates }
581
666
  )
@@ -584,7 +669,7 @@ export async function awaitingCallContractUpdateTx (channel, message, state) {
584
669
  }
585
670
  const signedTx = await appendSignature(
586
671
  message.params.data.signed_tx,
587
- tx => state.sign(tx, { updates: message.params.data.updates })
672
+ async tx => await state.sign(tx, { updates: message.params.data.updates })
588
673
  )
589
674
  if (typeof signedTx === 'string') {
590
675
  send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
@@ -598,10 +683,12 @@ export async function awaitingCallContractUpdateTx (channel, message, state) {
598
683
  return handleUnexpectedMessage(channel, message, state)
599
684
  }
600
685
 
601
- export async function awaitingCallContractForceProgressUpdate (channel, message, state) {
686
+ export async function awaitingCallContractForceProgressUpdate (
687
+ channel: Channel, message: ChannelMessage, state: ChannelState
688
+ ): Promise<ChannelFsm | undefined> {
602
689
  if (message.method === 'channels.sign.force_progress_tx') {
603
- const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
604
- state.sign(tx, { updates: message.params.data.updates })
690
+ const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
691
+ await state.sign(tx, { updates: message.params.data.updates })
605
692
  )
606
693
  send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })
607
694
  return { handler: awaitingForceProgressCompletion, state }
@@ -609,9 +696,11 @@ export async function awaitingCallContractForceProgressUpdate (channel, message,
609
696
  return handleUnexpectedMessage(channel, message, state)
610
697
  }
611
698
 
612
- export function awaitingForceProgressCompletion (channel, message, state) {
699
+ export function awaitingForceProgressCompletion (
700
+ channel: Channel, message: ChannelMessage, state: ChannelState
701
+ ): ChannelFsm {
613
702
  if (message.method === 'channels.on_chain_tx') {
614
- if (state.onOnChainTx) {
703
+ if (state.onOnChainTx != null) {
615
704
  state.onOnChainTx(message.params.data)
616
705
  }
617
706
  emit(channel, 'onChainTx', message.params.data.tx, {
@@ -623,7 +712,9 @@ export function awaitingForceProgressCompletion (channel, message, state) {
623
712
  return handleUnexpectedMessage(channel, message, state)
624
713
  }
625
714
 
626
- export function awaitingCallContractCompletion (channel, message, state) {
715
+ export function awaitingCallContractCompletion (
716
+ channel: Channel, message: ChannelMessage, state: ChannelState
717
+ ): ChannelFsm {
627
718
  if (message.method === 'channels.update') {
628
719
  changeState(channel, message.params.data.state)
629
720
  state.resolve({ accepted: true, signedTx: message.params.data.state })
@@ -646,17 +737,21 @@ export function awaitingCallContractCompletion (channel, message, state) {
646
737
  return handleUnexpectedMessage(channel, message, state)
647
738
  }
648
739
 
649
- export function awaitingCallsPruned (channels, message, state) {
740
+ export function awaitingCallsPruned (
741
+ _channels: Channel[], message: ChannelMessage, state: ChannelState
742
+ ): ChannelFsm {
650
743
  if (message.method === 'channels.calls_pruned.reply') {
651
744
  state.resolve()
652
745
  return { handler: channelOpen }
653
746
  }
654
- state.reject(new Error('Unexpected message received'))
747
+ state.reject(new UnexpectedChannelMessageError('Unexpected message received'))
655
748
  return { handler: channelClosed }
656
749
  }
657
750
 
658
- export function channelClosed (channel, message, state) {
659
- if (!state) return { handler: channelClosed }
751
+ export function channelClosed (
752
+ _channel: Channel, message: ChannelMessage, state: ChannelState
753
+ ): ChannelFsm {
754
+ if (state == null) return { handler: channelClosed }
660
755
  if (message.params.data.event === 'closing') return { handler: channelClosed, state }
661
756
  if (message.params.data.info === 'channel_closed') {
662
757
  state.closeTx = message.params.data.tx