@aeternity/aepp-sdk 12.1.3 → 13.0.0-alpha.1

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 (565) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +12031 -11231
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.d.ts +7 -3
  9. package/es/AeSdk.mjs +17 -22
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +6 -5
  12. package/es/AeSdkAepp.mjs +7 -30
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +18 -140
  15. package/es/AeSdkBase.mjs +30 -184
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkMethods.d.ts +123 -0
  18. package/es/AeSdkMethods.mjs +122 -0
  19. package/es/AeSdkMethods.mjs.map +1 -0
  20. package/es/AeSdkWallet.d.ts +7 -21
  21. package/es/AeSdkWallet.mjs +38 -86
  22. package/es/AeSdkWallet.mjs.map +1 -1
  23. package/es/Node.d.ts +11 -15
  24. package/es/Node.mjs +35 -48
  25. package/es/Node.mjs.map +1 -1
  26. package/es/account/Base.d.ts +24 -40
  27. package/es/account/Base.mjs +1 -101
  28. package/es/account/Base.mjs.map +1 -1
  29. package/es/account/Generalized.d.ts +16 -0
  30. package/es/account/Generalized.mjs +113 -0
  31. package/es/account/Generalized.mjs.map +1 -0
  32. package/es/account/Ledger.d.ts +28 -0
  33. package/es/account/Ledger.mjs +102 -0
  34. package/es/account/Ledger.mjs.map +1 -0
  35. package/es/account/LedgerFactory.d.ts +39 -0
  36. package/es/account/LedgerFactory.mjs +81 -0
  37. package/es/account/LedgerFactory.mjs.map +1 -0
  38. package/es/account/Memory.d.ts +13 -17
  39. package/es/account/Memory.mjs +43 -64
  40. package/es/account/Memory.mjs.map +1 -1
  41. package/es/account/Rpc.d.ts +6 -8
  42. package/es/account/Rpc.mjs +14 -32
  43. package/es/account/Rpc.mjs.map +1 -1
  44. package/es/aens.d.ts +4 -4
  45. package/es/aens.mjs +46 -41
  46. package/es/aens.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
  48. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  50. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +22 -11
  51. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
  53. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
  54. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  56. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
  57. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -42
  58. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
  60. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/schema.mjs +14 -68
  62. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  63. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
  64. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  65. package/es/apis/compiler/compiler.d.ts +23 -29
  66. package/es/apis/compiler/compiler.mjs +128 -189
  67. package/es/apis/compiler/compiler.mjs.map +1 -1
  68. package/es/apis/compiler/index.mjs.map +1 -1
  69. package/es/apis/compiler/models/index.d.ts +82 -135
  70. package/es/apis/compiler/models/index.mjs +1 -47
  71. package/es/apis/compiler/models/index.mjs.map +1 -1
  72. package/es/apis/compiler/models/mappers.d.ts +8 -8
  73. package/es/apis/compiler/models/mappers.mjs +165 -183
  74. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  75. package/es/apis/compiler/models/parameters.d.ts +0 -1
  76. package/es/apis/compiler/models/parameters.mjs +5 -9
  77. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  78. package/es/apis/node/index.mjs.map +1 -1
  79. package/es/apis/node/models/index.d.ts +48 -48
  80. package/es/apis/node/models/mappers.mjs +12 -6
  81. package/es/apis/node/models/mappers.mjs.map +1 -1
  82. package/es/apis/node/models/parameters.mjs.map +1 -1
  83. package/es/apis/node/node.mjs +43 -84
  84. package/es/apis/node/node.mjs.map +1 -1
  85. package/es/chain.d.ts +10 -2
  86. package/es/chain.mjs +37 -59
  87. package/es/chain.mjs.map +1 -1
  88. package/es/channel/Base.d.ts +200 -0
  89. package/es/channel/Base.mjs +293 -0
  90. package/es/channel/Base.mjs.map +1 -0
  91. package/es/channel/Contract.d.ts +248 -0
  92. package/es/channel/Contract.mjs +420 -0
  93. package/es/channel/Contract.mjs.map +1 -0
  94. package/es/channel/Spend.d.ts +219 -0
  95. package/es/channel/Spend.mjs +385 -0
  96. package/es/channel/Spend.mjs.map +1 -0
  97. package/es/channel/handlers.d.ts +8 -21
  98. package/es/channel/handlers.mjs +151 -899
  99. package/es/channel/handlers.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +27 -21
  101. package/es/channel/internal.mjs +101 -191
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Contract.d.ts +210 -0
  104. package/es/contract/Contract.mjs +551 -0
  105. package/es/contract/Contract.mjs.map +1 -0
  106. package/es/contract/compiler/Base.d.ts +81 -0
  107. package/es/contract/compiler/Base.mjs +5 -0
  108. package/es/contract/compiler/Base.mjs.map +1 -0
  109. package/es/contract/compiler/Cli.d.ts +23 -0
  110. package/es/contract/compiler/Cli.mjs +155 -0
  111. package/es/contract/compiler/Cli.mjs.map +1 -0
  112. package/es/contract/compiler/Http.d.ts +32 -0
  113. package/es/contract/compiler/Http.mjs +118 -0
  114. package/es/contract/compiler/Http.mjs.map +1 -0
  115. package/es/contract/compiler/HttpNode.d.ts +17 -0
  116. package/es/contract/compiler/HttpNode.mjs +26 -0
  117. package/es/contract/compiler/HttpNode.mjs.map +1 -0
  118. package/es/contract/compiler/getFileSystem.d.ts +6 -0
  119. package/es/contract/compiler/getFileSystem.mjs +40 -0
  120. package/es/contract/compiler/getFileSystem.mjs.map +1 -0
  121. package/es/contract/ga.d.ts +9 -34
  122. package/es/contract/ga.mjs +29 -112
  123. package/es/contract/ga.mjs.map +1 -1
  124. package/es/index-browser.d.ts +39 -0
  125. package/es/index-browser.mjs +55 -0
  126. package/es/index-browser.mjs.map +1 -0
  127. package/es/index.d.ts +4 -35
  128. package/es/index.mjs +4 -51
  129. package/es/index.mjs.map +1 -1
  130. package/es/oracle.d.ts +5 -5
  131. package/es/oracle.mjs +34 -40
  132. package/es/oracle.mjs.map +1 -1
  133. package/es/spend.d.ts +3 -3
  134. package/es/spend.mjs +18 -23
  135. package/es/spend.mjs.map +1 -1
  136. package/es/tx/builder/constants.d.ts +30 -2
  137. package/es/tx/builder/constants.mjs +43 -14
  138. package/es/tx/builder/constants.mjs.map +1 -1
  139. package/es/tx/builder/field-types/abi-version.d.ts +10 -0
  140. package/es/tx/builder/field-types/abi-version.mjs +20 -0
  141. package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
  142. package/es/tx/builder/field-types/address.d.ts +14 -0
  143. package/es/tx/builder/field-types/address.mjs +51 -0
  144. package/es/tx/builder/field-types/address.mjs.map +1 -0
  145. package/es/tx/builder/field-types/array.d.ts +7 -0
  146. package/es/tx/builder/field-types/array.mjs +11 -0
  147. package/es/tx/builder/field-types/array.mjs.map +1 -0
  148. package/es/tx/builder/field-types/boolean.d.ts +6 -0
  149. package/es/tx/builder/field-types/boolean.mjs +13 -0
  150. package/es/tx/builder/field-types/boolean.mjs.map +1 -0
  151. package/es/tx/builder/field-types/coin-amount.d.ts +2 -3
  152. package/es/tx/builder/field-types/coin-amount.mjs +4 -12
  153. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  154. package/es/tx/builder/field-types/ct-version.d.ts +30 -0
  155. package/es/tx/builder/field-types/ct-version.mjs +48 -0
  156. package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
  157. package/es/tx/builder/field-types/deposit.d.ts +1 -2
  158. package/es/tx/builder/field-types/deposit.mjs +2 -4
  159. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  160. package/es/tx/builder/field-types/encoded.d.ts +6 -0
  161. package/es/tx/builder/field-types/encoded.mjs +21 -0
  162. package/es/tx/builder/field-types/encoded.mjs.map +1 -0
  163. package/es/tx/builder/field-types/entry.d.ts +11 -0
  164. package/es/tx/builder/field-types/entry.mjs +31 -0
  165. package/es/tx/builder/field-types/entry.mjs.map +1 -0
  166. package/es/tx/builder/field-types/enumeration.d.ts +7 -0
  167. package/es/tx/builder/field-types/enumeration.mjs +30 -0
  168. package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
  169. package/es/tx/builder/field-types/fee.d.ts +10 -15
  170. package/es/tx/builder/field-types/fee.mjs +31 -43
  171. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  172. package/es/tx/builder/field-types/field.mjs +0 -2
  173. package/es/tx/builder/field-types/field.mjs.map +1 -1
  174. package/es/tx/builder/field-types/gas-limit.d.ts +5 -2
  175. package/es/tx/builder/field-types/gas-limit.mjs +12 -14
  176. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  177. package/es/tx/builder/field-types/gas-price.d.ts +1 -2
  178. package/es/tx/builder/field-types/gas-price.mjs +3 -7
  179. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  180. package/es/tx/builder/field-types/index.d.ts +80 -30
  181. package/es/tx/builder/field-types/index.mjs +34 -9
  182. package/es/tx/builder/field-types/index.mjs.map +1 -1
  183. package/es/tx/builder/field-types/mptree.d.ts +37 -0
  184. package/es/tx/builder/field-types/mptree.mjs +268 -0
  185. package/es/tx/builder/field-types/mptree.mjs.map +1 -0
  186. package/es/tx/builder/field-types/name-fee.d.ts +1 -3
  187. package/es/tx/builder/field-types/name-fee.mjs +3 -5
  188. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  189. package/es/tx/builder/field-types/name-id.d.ts +1 -4
  190. package/es/tx/builder/field-types/name-id.mjs +5 -10
  191. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  192. package/es/tx/builder/field-types/name.mjs +0 -2
  193. package/es/tx/builder/field-types/name.mjs.map +1 -1
  194. package/es/tx/builder/field-types/pointers.d.ts +23 -0
  195. package/es/tx/builder/field-types/pointers.mjs +36 -0
  196. package/es/tx/builder/field-types/pointers.mjs.map +1 -0
  197. package/es/tx/builder/field-types/raw.d.ts +6 -0
  198. package/es/tx/builder/field-types/raw.mjs +13 -0
  199. package/es/tx/builder/field-types/raw.mjs.map +1 -0
  200. package/es/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  201. package/es/tx/builder/field-types/short-u-int-const.mjs +16 -0
  202. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
  203. package/es/tx/builder/field-types/short-u-int.mjs +0 -2
  204. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  205. package/es/tx/builder/field-types/string.d.ts +6 -0
  206. package/es/tx/builder/field-types/string.mjs +10 -0
  207. package/es/tx/builder/field-types/string.mjs.map +1 -0
  208. package/es/tx/builder/field-types/u-int.d.ts +1 -2
  209. package/es/tx/builder/field-types/u-int.mjs +3 -4
  210. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  211. package/es/tx/builder/helpers.d.ts +2 -32
  212. package/es/tx/builder/helpers.mjs +19 -71
  213. package/es/tx/builder/helpers.mjs.map +1 -1
  214. package/es/tx/builder/index.d.ts +11 -49
  215. package/es/tx/builder/index.mjs +57 -337
  216. package/es/tx/builder/index.mjs.map +1 -1
  217. package/es/tx/builder/schema.d.ts +2367 -667
  218. package/es/tx/builder/schema.mjs +70 -145
  219. package/es/tx/builder/schema.mjs.map +1 -1
  220. package/es/tx/index.d.ts +4 -49
  221. package/es/tx/index.mjs +38 -112
  222. package/es/tx/index.mjs.map +1 -1
  223. package/es/tx/validator.d.ts +4 -6
  224. package/es/tx/validator.mjs +104 -90
  225. package/es/tx/validator.mjs.map +1 -1
  226. package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
  227. package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
  228. package/es/utils/amount-formatter.mjs +4 -10
  229. package/es/utils/amount-formatter.mjs.map +1 -1
  230. package/es/utils/autorest.d.ts +1 -0
  231. package/es/utils/autorest.mjs +17 -19
  232. package/es/utils/autorest.mjs.map +1 -1
  233. package/es/utils/bignumber.mjs +4 -7
  234. package/es/utils/bignumber.mjs.map +1 -1
  235. package/es/utils/bytes.d.ts +0 -17
  236. package/es/utils/bytes.mjs +6 -35
  237. package/es/utils/bytes.mjs.map +1 -1
  238. package/es/utils/crypto.d.ts +15 -8
  239. package/es/utils/crypto.mjs +40 -40
  240. package/es/utils/crypto.mjs.map +1 -1
  241. package/es/utils/encoder-types.d.ts +28 -28
  242. package/es/utils/encoder-types.mjs +0 -1
  243. package/es/utils/encoder-types.mjs.map +1 -1
  244. package/es/utils/encoder.d.ts +0 -1
  245. package/es/utils/encoder.mjs +7 -15
  246. package/es/utils/encoder.mjs.map +1 -1
  247. package/es/utils/errors.d.ts +15 -14
  248. package/es/utils/errors.mjs +86 -172
  249. package/es/utils/errors.mjs.map +1 -1
  250. package/es/utils/hd-wallet.d.ts +27 -19
  251. package/es/utils/hd-wallet.mjs +42 -26
  252. package/es/utils/hd-wallet.mjs.map +1 -1
  253. package/es/utils/json-big.mjs +0 -8
  254. package/es/utils/json-big.mjs.map +1 -1
  255. package/es/utils/keystore.d.ts +2 -0
  256. package/es/utils/keystore.mjs +37 -36
  257. package/es/utils/keystore.mjs.map +1 -1
  258. package/es/utils/other.d.ts +4 -2
  259. package/es/utils/other.mjs +11 -7
  260. package/es/utils/other.mjs.map +1 -1
  261. package/es/utils/semver-satisfies.mjs +0 -3
  262. package/es/utils/semver-satisfies.mjs.map +1 -1
  263. package/es/utils/string.d.ts +0 -12
  264. package/es/utils/string.mjs +1 -21
  265. package/es/utils/string.mjs.map +1 -1
  266. package/package.json +98 -51
  267. package/src/AeSdk.ts +15 -11
  268. package/src/AeSdkAepp.ts +9 -7
  269. package/src/AeSdkBase.ts +31 -202
  270. package/src/AeSdkMethods.ts +169 -0
  271. package/src/AeSdkWallet.ts +16 -47
  272. package/src/Node.ts +17 -18
  273. package/src/account/Base.ts +29 -75
  274. package/src/account/Generalized.ts +98 -0
  275. package/src/account/Ledger.ts +131 -0
  276. package/src/account/LedgerFactory.ts +86 -0
  277. package/src/account/Memory.ts +46 -60
  278. package/src/account/Rpc.ts +17 -26
  279. package/src/aens.ts +13 -11
  280. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +21 -9
  281. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
  282. package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -4
  283. package/src/aepp-wallet-communication/rpc/types.ts +11 -1
  284. package/src/aepp-wallet-communication/schema.ts +18 -18
  285. package/src/apis/compiler/code-model-v4.yaml +681 -888
  286. package/src/apis/compiler/compiler.ts +113 -154
  287. package/src/apis/compiler/models/index.ts +80 -140
  288. package/src/apis/compiler/models/mappers.ts +165 -183
  289. package/src/apis/compiler/models/parameters.ts +6 -12
  290. package/src/chain.ts +11 -6
  291. package/src/channel/Base.ts +335 -0
  292. package/src/channel/Contract.ts +488 -0
  293. package/src/channel/Spend.ts +408 -0
  294. package/src/channel/handlers.ts +164 -582
  295. package/src/channel/internal.ts +114 -143
  296. package/src/contract/Contract.ts +610 -0
  297. package/src/contract/compiler/Base.ts +94 -0
  298. package/src/contract/compiler/Cli.ts +134 -0
  299. package/src/contract/compiler/Http.ts +124 -0
  300. package/src/contract/compiler/HttpNode.ts +26 -0
  301. package/src/contract/compiler/getFileSystem.ts +42 -0
  302. package/src/contract/ga.ts +23 -106
  303. package/src/index-browser.ts +58 -0
  304. package/src/index.ts +4 -55
  305. package/src/oracle.ts +8 -8
  306. package/src/spend.ts +6 -14
  307. package/src/tx/builder/constants.ts +33 -3
  308. package/src/tx/builder/field-types/abi-version.ts +21 -0
  309. package/src/tx/builder/field-types/address.ts +62 -0
  310. package/src/tx/builder/field-types/array.ts +19 -0
  311. package/src/tx/builder/field-types/boolean.ts +9 -0
  312. package/src/tx/builder/field-types/coin-amount.ts +4 -9
  313. package/src/tx/builder/field-types/ct-version.ts +50 -0
  314. package/src/tx/builder/field-types/deposit.ts +1 -1
  315. package/src/tx/builder/field-types/encoded.ts +27 -0
  316. package/src/tx/builder/field-types/entry.ts +31 -0
  317. package/src/tx/builder/field-types/enumeration.ts +32 -0
  318. package/src/tx/builder/field-types/fee.ts +39 -21
  319. package/src/tx/builder/field-types/gas-limit.ts +13 -8
  320. package/src/tx/builder/field-types/gas-price.ts +0 -2
  321. package/src/tx/builder/field-types/index.ts +54 -15
  322. package/src/tx/builder/field-types/mptree.ts +242 -0
  323. package/src/tx/builder/field-types/name-fee.ts +2 -3
  324. package/src/tx/builder/field-types/name-id.ts +7 -10
  325. package/src/tx/builder/field-types/pointers.ts +41 -0
  326. package/src/tx/builder/field-types/raw.ts +9 -0
  327. package/src/tx/builder/field-types/short-u-int-const.ts +20 -0
  328. package/src/tx/builder/field-types/string.ts +11 -0
  329. package/src/tx/builder/field-types/u-int.ts +4 -5
  330. package/src/tx/builder/helpers.ts +10 -60
  331. package/src/tx/builder/index.ts +65 -308
  332. package/src/tx/builder/schema.ts +280 -341
  333. package/src/tx/index.ts +40 -103
  334. package/src/tx/validator.ts +91 -96
  335. package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
  336. package/src/utils/autorest.ts +16 -1
  337. package/src/utils/bytes.ts +6 -34
  338. package/src/utils/crypto.ts +23 -16
  339. package/src/utils/encoder.ts +0 -1
  340. package/src/utils/errors.ts +22 -25
  341. package/src/utils/hd-wallet.ts +30 -9
  342. package/src/utils/keystore.ts +24 -21
  343. package/src/utils/other.ts +16 -1
  344. package/src/utils/string.ts +0 -20
  345. package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
  346. package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
  347. package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
  348. package/types-legacy/ts4.2/AeSdkMethods.d.ts +140 -0
  349. package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
  350. package/types-legacy/ts4.2/Node.d.ts +78 -0
  351. package/types-legacy/ts4.2/account/Base.d.ts +52 -0
  352. package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
  353. package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
  354. package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
  355. package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
  356. package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
  357. package/types-legacy/ts4.2/aens.d.ts +222 -0
  358. package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  359. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  360. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  361. package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  362. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  363. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
  364. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
  365. package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  366. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
  367. package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
  368. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
  369. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
  370. package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
  371. package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
  372. package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
  373. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
  374. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
  375. package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
  376. package/types-legacy/ts4.2/chain.d.ts +256 -0
  377. package/types-legacy/ts4.2/channel/Base.d.ts +199 -0
  378. package/types-legacy/ts4.2/channel/Contract.d.ts +248 -0
  379. package/types-legacy/ts4.2/channel/Spend.d.ts +219 -0
  380. package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
  381. package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
  382. package/types-legacy/ts4.2/contract/Contract.d.ts +212 -0
  383. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +81 -0
  384. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
  385. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
  386. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
  387. package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
  388. package/types-legacy/ts4.2/contract/ga.d.ts +44 -0
  389. package/types-legacy/ts4.2/globals.d.ts +16 -0
  390. package/types-legacy/ts4.2/index-browser.d.ts +39 -0
  391. package/types-legacy/ts4.2/index.d.ts +5 -0
  392. package/types-legacy/ts4.2/oracle.d.ts +161 -0
  393. package/types-legacy/ts4.2/spend.d.ts +62 -0
  394. package/types-legacy/ts4.2/tx/builder/constants.d.ts +98 -0
  395. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +10 -0
  396. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +21 -0
  397. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
  398. package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
  399. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
  400. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +42 -0
  401. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
  402. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
  403. package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
  404. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +7 -0
  405. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +20 -0
  406. package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
  407. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +15 -0
  408. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
  409. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +129 -0
  410. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +43 -0
  411. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +18 -0
  412. package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
  413. package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
  414. package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
  415. package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
  416. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  417. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
  418. package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
  419. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +7 -0
  420. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
  421. package/types-legacy/ts4.2/tx/builder/index.d.ts +50 -0
  422. package/types-legacy/ts4.2/tx/builder/schema.d.ts +4675 -0
  423. package/types-legacy/ts4.2/tx/index.d.ts +19 -0
  424. package/types-legacy/ts4.2/tx/validator.d.ts +18 -0
  425. package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
  426. package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
  427. package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
  428. package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
  429. package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
  430. package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
  431. package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
  432. package/types-legacy/ts4.2/utils/errors.d.ts +475 -0
  433. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
  434. package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
  435. package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
  436. package/types-legacy/ts4.2/utils/other.d.ts +31 -0
  437. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
  438. package/types-legacy/ts4.2/utils/string.d.ts +12 -0
  439. package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
  440. package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
  441. package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
  442. package/types-legacy/ts4.5/AeSdkMethods.d.ts +140 -0
  443. package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
  444. package/types-legacy/ts4.5/Node.d.ts +78 -0
  445. package/types-legacy/ts4.5/account/Base.d.ts +52 -0
  446. package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
  447. package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
  448. package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
  449. package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
  450. package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
  451. package/types-legacy/ts4.5/aens.d.ts +222 -0
  452. package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  453. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  454. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  455. package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  456. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  457. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
  458. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
  459. package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  460. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
  461. package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
  462. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
  463. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
  464. package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
  465. package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
  466. package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
  467. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
  468. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
  469. package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
  470. package/types-legacy/ts4.5/chain.d.ts +256 -0
  471. package/types-legacy/ts4.5/channel/Base.d.ts +199 -0
  472. package/types-legacy/ts4.5/channel/Contract.d.ts +248 -0
  473. package/types-legacy/ts4.5/channel/Spend.d.ts +219 -0
  474. package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
  475. package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
  476. package/types-legacy/ts4.5/contract/Contract.d.ts +212 -0
  477. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +81 -0
  478. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
  479. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
  480. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
  481. package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
  482. package/types-legacy/ts4.5/contract/ga.d.ts +44 -0
  483. package/types-legacy/ts4.5/index-browser.d.ts +39 -0
  484. package/types-legacy/ts4.5/index.d.ts +4 -0
  485. package/types-legacy/ts4.5/oracle.d.ts +161 -0
  486. package/types-legacy/ts4.5/spend.d.ts +62 -0
  487. package/types-legacy/ts4.5/tx/builder/constants.d.ts +98 -0
  488. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +10 -0
  489. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +21 -0
  490. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
  491. package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
  492. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
  493. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +42 -0
  494. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
  495. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
  496. package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
  497. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +7 -0
  498. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +20 -0
  499. package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
  500. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +15 -0
  501. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
  502. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +129 -0
  503. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +43 -0
  504. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +18 -0
  505. package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
  506. package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
  507. package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
  508. package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
  509. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  510. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
  511. package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
  512. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +7 -0
  513. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
  514. package/types-legacy/ts4.5/tx/builder/index.d.ts +50 -0
  515. package/types-legacy/ts4.5/tx/builder/schema.d.ts +4675 -0
  516. package/types-legacy/ts4.5/tx/index.d.ts +19 -0
  517. package/types-legacy/ts4.5/tx/validator.d.ts +18 -0
  518. package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
  519. package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
  520. package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
  521. package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
  522. package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
  523. package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
  524. package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
  525. package/types-legacy/ts4.5/utils/errors.d.ts +475 -0
  526. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
  527. package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
  528. package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
  529. package/types-legacy/ts4.5/utils/other.d.ts +31 -0
  530. package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
  531. package/types-legacy/ts4.5/utils/string.d.ts +12 -0
  532. package/es/channel/index.d.ts +0 -625
  533. package/es/channel/index.mjs +0 -975
  534. package/es/channel/index.mjs.map +0 -1
  535. package/es/contract/Compiler.d.ts +0 -18
  536. package/es/contract/Compiler.mjs +0 -68
  537. package/es/contract/Compiler.mjs.map +0 -1
  538. package/es/contract/aci.d.ts +0 -127
  539. package/es/contract/aci.mjs +0 -508
  540. package/es/contract/aci.mjs.map +0 -1
  541. package/es/contract/methods.d.ts +0 -71
  542. package/es/contract/methods.mjs +0 -104
  543. package/es/contract/methods.mjs.map +0 -1
  544. package/es/deprecated/index.d.ts +0 -143
  545. package/es/deprecated/index.mjs +0 -162
  546. package/es/deprecated/index.mjs.map +0 -1
  547. package/es/deprecated/methods.d.ts +0 -18
  548. package/es/deprecated/methods.mjs +0 -26
  549. package/es/deprecated/methods.mjs.map +0 -1
  550. package/es/tx/builder/address.d.ts +0 -25
  551. package/es/tx/builder/address.mjs +0 -45
  552. package/es/tx/builder/address.mjs.map +0 -1
  553. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
  554. package/es/utils/mptree.d.ts +0 -26
  555. package/es/utils/mptree.mjs +0 -165
  556. package/es/utils/mptree.mjs.map +0 -1
  557. package/src/channel/index.ts +0 -1025
  558. package/src/contract/Compiler.ts +0 -67
  559. package/src/contract/aci.ts +0 -537
  560. package/src/contract/methods.ts +0 -123
  561. package/src/deprecated/index.ts +0 -172
  562. package/src/deprecated/methods.ts +0 -25
  563. package/src/tx/builder/address.ts +0 -50
  564. package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
  565. package/src/utils/mptree.ts +0 -145
@@ -17,50 +17,68 @@
17
17
  /* eslint-disable consistent-return */
18
18
  /* eslint-disable default-case */
19
19
  /* eslint-disable @typescript-eslint/no-use-before-define */
20
- import { generateKeyPair, encodeContractAddress } from '../utils/crypto';
21
20
  import {
22
21
  ChannelState,
23
- options,
24
22
  changeStatus,
25
23
  changeState,
26
- call,
27
- send,
24
+ notify,
28
25
  emit,
29
- channelId,
30
26
  disconnect,
31
- fsmId,
32
27
  ChannelMessage,
33
28
  ChannelFsm,
34
29
  SignTx,
30
+ ChannelStatus,
35
31
  } from './internal';
36
32
  import { unpackTx, buildTx } from '../tx/builder';
37
- import { encode, Encoded, Encoding } from '../utils/encoder';
33
+ import { decode, Encoded } from '../utils/encoder';
38
34
  import {
39
35
  IllegalArgumentError,
40
36
  InsufficientBalanceError,
41
37
  ChannelConnectionError,
42
38
  UnexpectedChannelMessageError,
39
+ ChannelError,
43
40
  } from '../utils/errors';
44
- import type Channel from '.';
41
+ import type Channel from './Base';
45
42
  import { Tag } from '../tx/builder/constants';
46
43
 
47
44
  export async function appendSignature(
48
45
  tx: Encoded.Transaction,
49
46
  signFn: SignTx,
50
47
  ): Promise<Encoded.Transaction | number | null> {
51
- const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx).tx;
52
- const result = await signFn(encode(encodedTx.rlpEncoded, Encoding.Transaction));
48
+ const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx);
49
+ const payloadTx = buildTx(encodedTx);
50
+ const result = await signFn(payloadTx);
53
51
  if (typeof result === 'string') {
54
- const { tx: signedTx } = unpackTx(result, Tag.SignedTx);
52
+ const { signatures: signatures2 } = unpackTx(result, Tag.SignedTx);
55
53
  return buildTx({
56
- signatures: signatures.concat(signedTx.signatures),
57
- encodedTx: signedTx.encodedTx.rlpEncoded,
58
- }, Tag.SignedTx).tx;
54
+ tag: Tag.SignedTx,
55
+ signatures: signatures.concat(signatures2),
56
+ encodedTx: decode(payloadTx),
57
+ });
59
58
  }
60
59
  return result;
61
60
  }
62
61
 
63
- function handleUnexpectedMessage(
62
+ export async function signAndNotify(
63
+ channel: Channel,
64
+ method: string,
65
+ data: {
66
+ tx?: Encoded.Transaction;
67
+ signed_tx?: Encoded.Transaction;
68
+ },
69
+ signFn: SignTx,
70
+ ): Promise<boolean> {
71
+ let signedTx;
72
+ if (data.tx != null) signedTx = await signFn(data.tx);
73
+ else if (data.signed_tx != null) signedTx = await appendSignature(data.signed_tx, signFn);
74
+ else throw new ChannelError('Can\'t find transaction in message');
75
+ const isError = typeof signedTx !== 'string';
76
+ const key = data.tx != null ? 'tx' : 'signed_tx';
77
+ notify(channel, method, isError ? { error: signedTx ?? 1 } : { [key]: signedTx });
78
+ return isError;
79
+ }
80
+
81
+ export function handleUnexpectedMessage(
64
82
  _channel: Channel,
65
83
  message: ChannelMessage,
66
84
  state: ChannelState,
@@ -72,24 +90,63 @@ function handleUnexpectedMessage(
72
90
  return { handler: channelOpen };
73
91
  }
74
92
 
93
+ export function awaitingCompletion(
94
+ channel: Channel,
95
+ message: ChannelMessage,
96
+ state: ChannelState,
97
+ onSuccess?: typeof handleUnexpectedMessage,
98
+ ): ChannelFsm {
99
+ if (onSuccess != null && message.method === 'channels.update') {
100
+ return onSuccess(channel, message, state);
101
+ }
102
+ if (message.method === 'channels.conflict') {
103
+ state.resolve({
104
+ accepted: false,
105
+ errorCode: message.params.data.error_code,
106
+ errorMessage: message.params.data.error_msg,
107
+ });
108
+ return { handler: channelOpen };
109
+ }
110
+ if (message.method === 'channels.info') {
111
+ if (message.params.data.event === 'aborted_update') {
112
+ state.resolve({ accepted: false });
113
+ return { handler: channelOpen };
114
+ }
115
+ }
116
+ if (message.error != null) {
117
+ const codes = message.error.data.map((d) => d.code);
118
+ if (codes.includes(1001)) {
119
+ state.reject(new InsufficientBalanceError('Insufficient balance'));
120
+ } else if (codes.includes(1002)) {
121
+ state.reject(new IllegalArgumentError('Amount cannot be negative'));
122
+ } else {
123
+ state.reject(new ChannelConnectionError(message.error.message));
124
+ }
125
+ return { handler: channelOpen };
126
+ }
127
+ return handleUnexpectedMessage(channel, message, state);
128
+ }
129
+
75
130
  export function awaitingConnection(
76
131
  channel: Channel,
77
132
  message: ChannelMessage,
78
133
  ): ChannelFsm | undefined {
79
134
  if (message.method === 'channels.info') {
80
135
  const channelInfoStatus: string = message.params.data.event;
81
- if (['channel_accept', 'funding_created'].includes(channelInfoStatus)) {
82
- changeStatus(channel, {
83
- channel_accept: 'accepted',
84
- funding_created: 'halfSigned',
85
- }[channelInfoStatus as 'channel_accept' | 'funding_created']);
136
+
137
+ let nextStatus: ChannelStatus | null = null;
138
+ if (channelInfoStatus === 'channel_accept') nextStatus = 'accepted';
139
+ if (channelInfoStatus === 'funding_created') nextStatus = 'halfSigned';
140
+ if (nextStatus != null) {
141
+ changeStatus(channel, nextStatus);
86
142
  return { handler: awaitingChannelCreateTx };
87
143
  }
144
+
88
145
  if (message.params.data.event === 'channel_reestablished') {
89
146
  return { handler: awaitingOpenConfirmation };
90
147
  }
91
148
  if (message.params.data.event === 'fsm_up') {
92
- fsmId.set(channel, message.params.data.fsm_id);
149
+ channel._fsmId = message.params.data.fsm_id;
93
150
  return { handler: awaitingConnection };
94
151
  }
95
152
  return { handler: awaitingConnection };
@@ -107,8 +164,8 @@ export async function awaitingReconnection(
107
164
  ): Promise<ChannelFsm> {
108
165
  if (message.method === 'channels.info') {
109
166
  if (message.params.data.event === 'fsm_up') {
110
- fsmId.set(channel, message.params.data.fsm_id);
111
- changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx);
167
+ channel._fsmId = message.params.data.fsm_id;
168
+ changeState(channel, (await channel.state()).signedTx);
112
169
  return { handler: channelOpen };
113
170
  }
114
171
  }
@@ -119,25 +176,15 @@ export async function awaitingChannelCreateTx(
119
176
  channel: Channel,
120
177
  message: ChannelMessage,
121
178
  ): Promise<ChannelFsm | undefined> {
122
- const channelOptions = options.get(channel);
123
- if (channelOptions != null) {
124
- const tag = {
125
- initiator: 'initiator_sign',
126
- responder: 'responder_sign',
127
- }[channelOptions.role];
128
- if (message.method === `channels.sign.${tag}`) {
129
- if (message.params.data.tx != null) {
130
- const signedTx = await channelOptions.sign(tag, message.params.data.tx);
131
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });
132
- return { handler: awaitingOnChainTx };
133
- }
134
- const signedTx = await appendSignature(
135
- message.params.data.signed_tx,
136
- async (tx) => channelOptions.sign(tag, tx),
137
- );
138
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });
139
- return { handler: awaitingOnChainTx };
140
- }
179
+ const tag = channel._options.role === 'initiator' ? 'initiator_sign' : 'responder_sign';
180
+ if (message.method === `channels.sign.${tag}`) {
181
+ await signAndNotify(
182
+ channel,
183
+ `channels.${tag}`,
184
+ message.params.data,
185
+ async (tx) => channel._options.sign(tag, tx),
186
+ );
187
+ return { handler: awaitingOnChainTx };
141
188
  }
142
189
  }
143
190
 
@@ -145,77 +192,58 @@ export function awaitingOnChainTx(
145
192
  channel: Channel,
146
193
  message: ChannelMessage,
147
194
  ): ChannelFsm | undefined {
148
- const channelOptions = options.get(channel);
149
- if (channelOptions != null) {
150
- if (message.method === 'channels.on_chain_tx') {
151
- if (
152
- message.params.data.info === 'funding_signed'
153
- && channelOptions.role === 'initiator'
154
- ) {
155
- return { handler: awaitingBlockInclusion };
156
- }
157
- if (
158
- message.params.data.info === 'funding_created'
159
- && channelOptions.role === 'responder'
160
- ) {
161
- return { handler: awaitingBlockInclusion };
195
+ function awaitingBlockInclusion(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {
196
+ if (message2.method === 'channels.info') {
197
+ switch (message2.params.data.event) {
198
+ case 'funding_created':
199
+ case 'own_funding_locked':
200
+ return { handler: awaitingBlockInclusion };
201
+ case 'funding_locked':
202
+ return { handler: awaitingOpenConfirmation };
162
203
  }
163
204
  }
164
- if (
165
- message.method === 'channels.info'
166
- && message.params.data.event === 'funding_signed'
167
- && channelOptions.role === 'initiator'
168
- ) {
169
- channelId.set(channel, message.params.channel_id);
170
- changeStatus(channel, 'signed');
171
- return { handler: awaitingOnChainTx };
205
+ if (message2.method === 'channels.on_chain_tx') {
206
+ emit(channel, 'onChainTx', message2.params.data.tx, {
207
+ info: message2.params.data.info,
208
+ type: message2.params.data.type,
209
+ });
210
+ return { handler: awaitingBlockInclusion };
172
211
  }
173
212
  }
174
- }
175
213
 
176
- export function awaitingBlockInclusion(
177
- channel: Channel,
178
- message: ChannelMessage,
179
- ): ChannelFsm | undefined {
180
- if (message.method === 'channels.info') {
181
- const handlers: {
182
- [key: string]: (channel: Channel, message: ChannelMessage) => ChannelFsm | undefined;
183
- } = {
184
- funding_created: awaitingBlockInclusion,
185
- own_funding_locked: awaitingBlockInclusion,
186
- funding_locked: awaitingOpenConfirmation,
187
- };
188
- const handler = handlers[message.params.data.event as string];
189
- if (handler != null) {
190
- return { handler };
214
+ if (message.method === 'channels.on_chain_tx') {
215
+ const { info } = message.params.data;
216
+ const { role } = channel._options;
217
+ if ((info === 'funding_signed' && role === 'initiator')
218
+ || (info === 'funding_created' && role === 'responder')) {
219
+ return { handler: awaitingBlockInclusion };
191
220
  }
192
221
  }
193
- if (message.method === 'channels.on_chain_tx') {
194
- emit(channel, 'onChainTx', message.params.data.tx, {
195
- info: message.params.data.info,
196
- type: message.params.data.type,
197
- });
198
- return { handler: awaitingBlockInclusion };
222
+ if (
223
+ message.method === 'channels.info'
224
+ && message.params.data.event === 'funding_signed'
225
+ && channel._options.role === 'initiator'
226
+ ) {
227
+ channel._channelId = message.params.channel_id;
228
+ changeStatus(channel, 'signed');
229
+ return { handler: awaitingOnChainTx };
199
230
  }
200
231
  }
201
232
 
202
- export function awaitingOpenConfirmation(
233
+ function awaitingOpenConfirmation(
203
234
  channel: Channel,
204
235
  message: ChannelMessage,
205
236
  ): ChannelFsm | undefined {
206
237
  if (message.method === 'channels.info' && message.params.data.event === 'open') {
207
- channelId.set(channel, message.params.channel_id);
208
- return { handler: awaitingInitialState };
209
- }
210
- }
211
-
212
- export function awaitingInitialState(
213
- channel: Channel,
214
- message: ChannelMessage,
215
- ): ChannelFsm | undefined {
216
- if (message.method === 'channels.update') {
217
- changeState(channel, message.params.data.state);
218
- return { handler: channelOpen };
238
+ channel._channelId = message.params.channel_id;
239
+ return {
240
+ handler(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {
241
+ if (message2.method === 'channels.update') {
242
+ changeState(channel, message2.params.data.state);
243
+ return { handler: channelOpen };
244
+ }
245
+ },
246
+ };
219
247
  }
220
248
  }
221
249
 
@@ -245,7 +273,7 @@ export async function channelOpen(
245
273
  emit(channel, message.params.data.event);
246
274
  return { handler: channelOpen };
247
275
  case 'fsm_up':
248
- fsmId.set(channel, message.params.data.fsm_id);
276
+ channel._fsmId = message.params.data.fsm_id;
249
277
  return { handler: channelOpen };
250
278
  case 'timeout':
251
279
  case 'close_mutual':
@@ -283,184 +311,56 @@ channelOpen.enter = (channel: Channel) => {
283
311
  changeStatus(channel, 'open');
284
312
  };
285
313
 
286
- export async function awaitingOffChainTx(
314
+ async function awaitingTxSignRequest(
287
315
  channel: Channel,
288
316
  message: ChannelMessage,
289
317
  state: ChannelState,
290
318
  ): Promise<ChannelFsm> {
291
- if (message.method === 'channels.sign.update') {
292
- const { sign } = state;
293
- if (message.params.data.tx != null) {
294
- const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });
295
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });
296
- return { handler: awaitingOffChainUpdate, state };
297
- }
298
- const signedTx = await appendSignature(
299
- message.params.data.signed_tx,
300
- async (tx) => sign(tx, { updates: message.params.data.updates }),
301
- );
302
- if (typeof signedTx === 'string') {
303
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });
304
- return { handler: awaitingOffChainUpdate, state };
305
- }
306
- if (typeof signedTx === 'number') {
307
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });
308
- return { handler: awaitingOffChainTx, state };
309
- }
310
- }
311
- if (message.method === 'channels.error') {
312
- state.reject(new ChannelConnectionError(message.data.message));
313
- return { handler: channelOpen };
314
- }
315
- if (message.error != null) {
316
- const { data } = message.error ?? { data: [] };
317
- if (data.find((i) => i.code === 1001) != null) {
318
- state.reject(new InsufficientBalanceError('Insufficient balance'));
319
- } else if (data.find((i) => i.code === 1002) != null) {
320
- state.reject(new IllegalArgumentError('Amount cannot be negative'));
321
- } else {
322
- state.reject(new ChannelConnectionError(message.error.message));
323
- }
324
- return { handler: channelOpen };
325
- }
326
- if (message.method === 'channels.conflict') {
327
- state.resolve({
328
- accepted: false,
329
- errorCode: message.params.data.error_code,
330
- errorMessage: message.params.data.error_msg,
331
- });
332
- return { handler: channelOpen };
333
- }
334
- if (message.method === 'channels.info') {
335
- if (message.params.data.event === 'aborted_update') {
336
- state.resolve({ accepted: false });
337
- return { handler: channelOpen };
338
- }
339
- }
340
- return handleUnexpectedMessage(channel, message, state);
341
- }
319
+ const [, tag] = message.method.match(/^channels\.sign\.([^.]+)$/) ?? [];
320
+ if (tag == null) return handleUnexpectedMessage(channel, message, state);
321
+ const isError = await signAndNotify(
322
+ channel,
323
+ `channels.${tag}`,
324
+ message.params.data,
325
+ async (tx) => channel._options.sign(tag, tx, { updates: message.params.data.updates }),
326
+ );
342
327
 
343
- export function awaitingOffChainUpdate(
344
- channel: Channel,
345
- message: ChannelMessage,
346
- state: ChannelState,
347
- ): ChannelFsm | undefined {
348
- if (message.method === 'channels.update') {
349
- changeState(channel, message.params.data.state);
350
- state.resolve({ accepted: true, signedTx: message.params.data.state });
351
- return { handler: channelOpen };
352
- }
353
- if (message.method === 'channels.conflict') {
354
- state.resolve({
355
- accepted: false,
356
- errorCode: message.params.data.error_code,
357
- errorMessage: message.params.data.error_msg,
358
- });
359
- return { handler: channelOpen };
360
- }
361
- if (message.method === 'channels.info') {
362
- if (message.params.data.event === 'aborted_update') {
363
- state.resolve({ accepted: false });
364
- return { handler: channelOpen };
328
+ function awaitingUpdateConflict(_: Channel, message2: ChannelMessage): ChannelFsm {
329
+ if (message2.error != null) {
330
+ return { handler: awaitingUpdateConflict, state };
365
331
  }
366
- }
367
- if (message.error != null) {
368
- state.reject(new ChannelConnectionError(message.error.message));
369
- return { handler: channelOpen };
370
- }
371
- return handleUnexpectedMessage(channel, message, state);
372
- }
373
-
374
- export async function awaitingTxSignRequest(
375
- channel: Channel,
376
- message: ChannelMessage,
377
- state: ChannelState,
378
- ): Promise<ChannelFsm | undefined> {
379
- const [, tag] = message.method.match(/^channels\.sign\.([^.]+)$/) ?? [];
380
- const channelOptions = options.get(channel);
381
- if (tag != null && (channelOptions != null)) {
382
- if (message.params.data.tx != null) {
383
- const signedTx = await channelOptions.sign(tag, message.params.data.tx, {
384
- updates: message.params.data.updates,
385
- });
386
- if (signedTx != null) {
387
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });
388
- return { handler: channelOpen };
389
- }
390
- } else {
391
- const signedTx = await appendSignature(
392
- message.params.data.signed_tx,
393
- async (tx) => channelOptions.sign(tag, tx, { updates: message.params.data.updates }),
394
- );
395
- if (typeof signedTx === 'string') {
396
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });
397
- return { handler: channelOpen };
398
- }
399
- if (typeof signedTx === 'number') {
400
- send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } });
401
- return { handler: awaitingUpdateConflict, state };
402
- }
332
+ if (message2.method === 'channels.conflict') {
333
+ return { handler: channelOpen };
403
334
  }
404
- // soft-reject via competing update
405
- send(channel, {
406
- jsonrpc: '2.0',
407
- method: 'channels.update.new',
408
- params: {
409
- from: generateKeyPair().publicKey,
410
- to: generateKeyPair().publicKey,
411
- amount: 1,
412
- },
413
- });
414
- return { handler: awaitingUpdateConflict, state };
415
- }
416
- return handleUnexpectedMessage(channel, message, state);
417
- }
418
-
419
- export function awaitingUpdateConflict(
420
- channel: Channel,
421
- message: ChannelMessage,
422
- state: ChannelState,
423
- ): ChannelFsm {
424
- if (message.error != null) {
425
- return { handler: awaitingUpdateConflict, state };
335
+ return handleUnexpectedMessage(channel, message2, state);
426
336
  }
427
- if (message.method === 'channels.conflict') {
428
- return { handler: channelOpen };
429
- }
430
- return handleUnexpectedMessage(channel, message, state);
337
+ return isError ? { handler: awaitingUpdateConflict, state } : { handler: channelOpen };
431
338
  }
432
339
 
433
340
  export async function awaitingShutdownTx(
434
341
  channel: Channel,
435
342
  message: ChannelMessage,
436
343
  state: ChannelState,
437
- ): Promise<ChannelFsm | undefined> {
438
- if (message.method === 'channels.sign.shutdown_sign') {
439
- if (message.params.data.tx != null) {
440
- const signedTx = await state.sign(message.params.data.tx);
441
- send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } });
442
- return { handler: awaitingShutdownOnChainTx, state };
443
- }
444
- const signedTx = await appendSignature(
445
- message.params.data.signed_tx,
446
- async (tx) => state.sign(tx),
447
- );
448
- send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } });
449
- return { handler: awaitingShutdownOnChainTx, state };
450
- }
451
- return handleUnexpectedMessage(channel, message, state);
452
- }
453
-
454
- export function awaitingShutdownOnChainTx(
455
- channel: Channel,
456
- message: ChannelMessage,
457
- state: ChannelState,
458
- ): ChannelFsm {
459
- if (message.method === 'channels.on_chain_tx') {
460
- // state.resolve(message.params.data.tx)
461
- return { handler: channelClosed, state };
462
- }
463
- return handleUnexpectedMessage(channel, message, state);
344
+ ): Promise<ChannelFsm> {
345
+ if (message.method !== 'channels.sign.shutdown_sign') {
346
+ return handleUnexpectedMessage(channel, message, state);
347
+ }
348
+ await signAndNotify(
349
+ channel,
350
+ 'channels.shutdown_sign',
351
+ message.params.data,
352
+ async (tx) => state.sign(tx),
353
+ );
354
+ return {
355
+ handler(_: Channel, message2: ChannelMessage): ChannelFsm {
356
+ if (message2.method !== 'channels.on_chain_tx') {
357
+ return handleUnexpectedMessage(channel, message2, state);
358
+ }
359
+ // state.resolve(message.params.data.tx)
360
+ return { handler: channelClosed, state };
361
+ },
362
+ state,
363
+ };
464
364
  }
465
365
 
466
366
  export function awaitingLeave(
@@ -480,324 +380,6 @@ export function awaitingLeave(
480
380
  return handleUnexpectedMessage(channel, message, state);
481
381
  }
482
382
 
483
- export async function awaitingWithdrawTx(
484
- channel: Channel,
485
- message: ChannelMessage,
486
- state: ChannelState,
487
- ): Promise<ChannelFsm | undefined> {
488
- if (message.method === 'channels.sign.withdraw_tx') {
489
- const { sign } = state;
490
- if (message.params.data.tx != null) {
491
- const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });
492
- send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } });
493
- return { handler: awaitingWithdrawCompletion, state };
494
- }
495
- const signedTx = await appendSignature(
496
- message.params.data.signed_tx,
497
- async (tx) => sign(tx, { updates: message.params.data.updates }),
498
- );
499
- if (typeof signedTx === 'string') {
500
- send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } });
501
- return { handler: awaitingWithdrawCompletion, state };
502
- }
503
- if (typeof signedTx === 'number') {
504
- send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } });
505
- return { handler: awaitingWithdrawCompletion, state };
506
- }
507
- }
508
- return handleUnexpectedMessage(channel, message, state);
509
- }
510
-
511
- export function awaitingWithdrawCompletion(
512
- channel: Channel,
513
- message: ChannelMessage,
514
- state: ChannelState,
515
- ): ChannelFsm {
516
- if (message.method === 'channels.on_chain_tx') {
517
- state.onOnChainTx?.(message.params.data.tx);
518
- return { handler: awaitingWithdrawCompletion, state };
519
- }
520
- if (message.method === 'channels.info') {
521
- if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {
522
- const callbacks: {
523
- [key: string]: Function | undefined;
524
- } = {
525
- own_withdraw_locked: state.onOwnWithdrawLocked,
526
- withdraw_locked: state.onWithdrawLocked,
527
- };
528
- callbacks[message.params.data.event]?.();
529
- return { handler: awaitingWithdrawCompletion, state };
530
- }
531
- }
532
- if (message.method === 'channels.update') {
533
- changeState(channel, message.params.data.state);
534
- state.resolve({ accepted: true, signedTx: message.params.data.state });
535
- return { handler: channelOpen };
536
- }
537
- if (message.method === 'channels.conflict') {
538
- state.resolve({
539
- accepted: false,
540
- errorCode: message.params.data.error_code,
541
- errorMessage: message.params.data.error_msg,
542
- });
543
- return { handler: channelOpen };
544
- }
545
- if (message.method === 'channels.info') {
546
- if (message.params.data.event === 'aborted_update') {
547
- state.resolve({ accepted: false });
548
- return { handler: channelOpen };
549
- }
550
- }
551
- return handleUnexpectedMessage(channel, message, state);
552
- }
553
-
554
- export async function awaitingDepositTx(
555
- channel: Channel,
556
- message: ChannelMessage,
557
- state: ChannelState,
558
- ): Promise<ChannelFsm | undefined> {
559
- if (message.method === 'channels.sign.deposit_tx') {
560
- const { sign } = state;
561
- if (message.params.data.tx != null) {
562
- const signedTx = await sign(
563
- message.params.data.tx,
564
- { updates: message.params.data.updates },
565
- );
566
- send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } });
567
- return { handler: awaitingDepositCompletion, state };
568
- }
569
- const signedTx = await appendSignature(
570
- message.params.data.signed_tx,
571
- async (tx) => sign(tx, { updates: message.params.data.updates }),
572
- );
573
- if (typeof signedTx === 'string') {
574
- send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } });
575
- return { handler: awaitingDepositCompletion, state };
576
- }
577
- if (typeof signedTx === 'number') {
578
- send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } });
579
- return { handler: awaitingDepositCompletion, state };
580
- }
581
- }
582
- return handleUnexpectedMessage(channel, message, state);
583
- }
584
-
585
- export function awaitingDepositCompletion(
586
- channel: Channel,
587
- message: ChannelMessage,
588
- state: ChannelState,
589
- ): ChannelFsm {
590
- if (message.method === 'channels.on_chain_tx') {
591
- state.onOnChainTx?.(message.params.data.tx);
592
- return { handler: awaitingDepositCompletion, state };
593
- }
594
- if (message.method === 'channels.info') {
595
- if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {
596
- const callbacks: {
597
- [key: string]: Function | undefined;
598
- } = {
599
- own_deposit_locked: state.onOwnDepositLocked,
600
- deposit_locked: state.onDepositLocked,
601
- };
602
- callbacks[message.params.data.event]?.();
603
- return { handler: awaitingDepositCompletion, state };
604
- }
605
- }
606
- if (message.method === 'channels.update') {
607
- changeState(channel, message.params.data.state);
608
- state.resolve({ accepted: true, signedTx: message.params.data.state });
609
- return { handler: channelOpen };
610
- }
611
- if (message.method === 'channels.conflict') {
612
- state.resolve({
613
- accepted: false,
614
- errorCode: message.params.data.error_code,
615
- errorMessage: message.params.data.error_msg,
616
- });
617
- return { handler: channelOpen };
618
- }
619
- if (message.method === 'channels.info') {
620
- if (message.params.data.event === 'aborted_update') {
621
- state.resolve({ accepted: false });
622
- return { handler: channelOpen };
623
- }
624
- }
625
- return handleUnexpectedMessage(channel, message, state);
626
- }
627
-
628
- export async function awaitingNewContractTx(
629
- channel: Channel,
630
- message: ChannelMessage,
631
- state: ChannelState,
632
- ): Promise<ChannelFsm | undefined> {
633
- if (message.method === 'channels.sign.update') {
634
- if (message.params.data.tx != null) {
635
- const signedTx = await state.sign(message.params.data.tx);
636
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });
637
- return { handler: awaitingNewContractCompletion, state };
638
- }
639
- const signedTx = await appendSignature(
640
- message.params.data.signed_tx,
641
- async (tx) => state.sign(tx),
642
- );
643
- if (typeof signedTx === 'string') {
644
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });
645
- return { handler: awaitingNewContractCompletion, state };
646
- }
647
- if (typeof signedTx === 'number') {
648
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });
649
- return { handler: awaitingNewContractCompletion, state };
650
- }
651
- }
652
- return handleUnexpectedMessage(channel, message, state);
653
- }
654
-
655
- export function awaitingNewContractCompletion(
656
- channel: Channel,
657
- message: ChannelMessage,
658
- state: ChannelState,
659
- ): ChannelFsm {
660
- const channelOptions = options.get(channel);
661
- if (message.method === 'channels.update') {
662
- const { round } = unpackTx(message.params.data.state, Tag.SignedTx).tx.encodedTx.tx;
663
- if (channelOptions?.role != null) {
664
- let role: null | 'initiatorId' | 'responderId' = null;
665
- if (channelOptions.role === 'initiator') role = 'initiatorId';
666
- if (channelOptions.role === 'responder') role = 'responderId';
667
- if (role != null) {
668
- const owner = channelOptions?.[role];
669
- changeState(channel, message.params.data.state);
670
- state.resolve({
671
- accepted: true,
672
- address: encodeContractAddress(owner, round),
673
- signedTx: message.params.data.state,
674
- });
675
- return { handler: channelOpen };
676
- }
677
- }
678
- }
679
- if (message.method === 'channels.conflict') {
680
- state.resolve({
681
- accepted: false,
682
- errorCode: message.params.data.error_code,
683
- errorMessage: message.params.data.error_msg,
684
- });
685
- return { handler: channelOpen };
686
- }
687
- if (message.method === 'channels.info') {
688
- if (message.params.data.event === 'aborted_update') {
689
- state.resolve({ accepted: false });
690
- return { handler: channelOpen };
691
- }
692
- }
693
- return handleUnexpectedMessage(channel, message, state);
694
- }
695
-
696
- export async function awaitingCallContractUpdateTx(
697
- channel: Channel,
698
- message: ChannelMessage,
699
- state: ChannelState,
700
- ): Promise<ChannelFsm | undefined> {
701
- if (message.method === 'channels.sign.update') {
702
- if (message.params.data.tx != null) {
703
- const signedTx = await state.sign(
704
- message.params.data.tx,
705
- { updates: message.params.data.updates },
706
- );
707
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });
708
- return { handler: awaitingCallContractCompletion, state };
709
- }
710
- const signedTx = await appendSignature(
711
- message.params.data.signed_tx,
712
- async (tx) => state.sign(tx, { updates: message.params.data.updates }),
713
- );
714
- if (typeof signedTx === 'string') {
715
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });
716
- return { handler: awaitingCallContractCompletion, state };
717
- }
718
- if (typeof signedTx === 'number') {
719
- send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });
720
- return { handler: awaitingCallContractCompletion, state };
721
- }
722
- }
723
- return handleUnexpectedMessage(channel, message, state);
724
- }
725
-
726
- export async function awaitingCallContractForceProgressUpdate(
727
- channel: Channel,
728
- message: ChannelMessage,
729
- state: ChannelState,
730
- ): Promise<ChannelFsm | undefined> {
731
- if (message.method === 'channels.sign.force_progress_tx') {
732
- const signedTx = await appendSignature(
733
- message.params.data.signed_tx,
734
- async (tx) => state.sign(tx, { updates: message.params.data.updates }),
735
- );
736
- send(
737
- channel,
738
- { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } },
739
- );
740
- return { handler: awaitingForceProgressCompletion, state };
741
- }
742
- return handleUnexpectedMessage(channel, message, state);
743
- }
744
-
745
- export function awaitingForceProgressCompletion(
746
- channel: Channel,
747
- message: ChannelMessage,
748
- state: ChannelState,
749
- ): ChannelFsm {
750
- if (message.method === 'channels.on_chain_tx') {
751
- state.onOnChainTx?.(message.params.data.tx);
752
- emit(channel, 'onChainTx', message.params.data.tx, {
753
- info: message.params.data.info,
754
- type: message.params.data.type,
755
- });
756
- state.resolve({ accepted: true, tx: message.params.data.tx });
757
- }
758
- return handleUnexpectedMessage(channel, message, state);
759
- }
760
-
761
- export function awaitingCallContractCompletion(
762
- channel: Channel,
763
- message: ChannelMessage,
764
- state: ChannelState,
765
- ): ChannelFsm {
766
- if (message.method === 'channels.update') {
767
- changeState(channel, message.params.data.state);
768
- state.resolve({ accepted: true, signedTx: message.params.data.state });
769
- return { handler: channelOpen };
770
- }
771
- if (message.method === 'channels.conflict') {
772
- state.resolve({
773
- accepted: false,
774
- errorCode: message.params.data.error_code,
775
- errorMessage: message.params.data.error_msg,
776
- });
777
- return { handler: channelOpen };
778
- }
779
- if (message.method === 'channels.info') {
780
- if (message.params.data.event === 'aborted_update') {
781
- state.resolve({ accepted: false });
782
- return { handler: channelOpen };
783
- }
784
- }
785
- return handleUnexpectedMessage(channel, message, state);
786
- }
787
-
788
- export function awaitingCallsPruned(
789
- _channels: Channel[],
790
- message: ChannelMessage,
791
- state: ChannelState,
792
- ): ChannelFsm {
793
- if (message.method === 'channels.calls_pruned.reply') {
794
- state.resolve();
795
- return { handler: channelOpen };
796
- }
797
- state.reject(new UnexpectedChannelMessageError('Unexpected message received'));
798
- return { handler: channelClosed };
799
- }
800
-
801
383
  export function channelClosed(
802
384
  _channel: Channel,
803
385
  message: ChannelMessage,