@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
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.mjs","names":["generateKeyPair","encodeContractAddress","options","changeStatus","changeState","call","send","emit","channelId","disconnect","fsmId","unpackTx","buildTx","encode","Encoding","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","Tag","appendSignature","tx","signFn","signatures","encodedTx","SignedTx","result","rlpEncoded","Transaction","signedTx","concat","handleUnexpectedMessage","_channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingConnection","channel","method","channelInfoStatus","params","data","event","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","set","fsm_id","payload","channelClosed","awaitingReconnection","signed_tx","channelOptions","get","tag","initiator","responder","role","sign","jsonrpc","awaitingOnChainTx","info","awaitingBlockInclusion","channel_id","handlers","own_funding_locked","funding_locked","type","awaitingInitialState","awaitingTxSignRequest","enter","awaitingOffChainTx","updates","awaitingOffChainUpdate","error","find","i","code","resolve","accepted","errorCode","error_code","errorMessage","error_msg","match","awaitingUpdateConflict","from","publicKey","to","amount","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","callbacks","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","owner","address","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","_channels","closeTx"],"sources":["../../src/channel/handlers.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { generateKeyPair, encodeContractAddress } from '../utils/crypto';\nimport {\n ChannelState,\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId,\n ChannelMessage,\n ChannelFsm,\n SignTx,\n} from './internal';\nimport { unpackTx, buildTx } from '../tx/builder';\nimport { encode, Encoded, Encoding } from '../utils/encoder';\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError,\n} from '../utils/errors';\nimport type Channel from '.';\nimport { Tag } from '../tx/builder/constants';\n\nexport async function appendSignature(\n tx: Encoded.Transaction,\n signFn: SignTx,\n): Promise<Encoded.Transaction | number | null> {\n const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx).tx;\n const result = await signFn(encode(encodedTx.rlpEncoded, Encoding.Transaction));\n if (typeof result === 'string') {\n const { tx: signedTx } = unpackTx(result, Tag.SignedTx);\n return buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded,\n }, Tag.SignedTx).tx;\n }\n return result;\n}\n\nfunction handleUnexpectedMessage(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n state?.reject?.(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message },\n ));\n return { handler: channelOpen };\n}\n\nexport function awaitingConnection(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const channelInfoStatus: string = message.params.data.event;\n if (['channel_accept', 'funding_created'].includes(channelInfoStatus)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned',\n }[channelInfoStatus as 'channel_accept' | 'funding_created']);\n return { handler: awaitingChannelCreateTx };\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation };\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id);\n return { handler: awaitingConnection };\n }\n return { handler: awaitingConnection };\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message?.payload?.message));\n return { handler: channelClosed };\n }\n}\n\nexport async function awaitingReconnection(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id);\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx);\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingChannelCreateTx(\n channel: Channel,\n message: ChannelMessage,\n): Promise<ChannelFsm | undefined> {\n const channelOptions = options.get(channel);\n if (channelOptions != null) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign',\n }[channelOptions.role];\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx != null) {\n const signedTx = await channelOptions.sign(tag, message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });\n return { handler: awaitingOnChainTx };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => channelOptions.sign(tag, tx),\n );\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });\n return { handler: awaitingOnChainTx };\n }\n }\n}\n\nexport function awaitingOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n const channelOptions = options.get(channel);\n if (channelOptions != null) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed'\n && channelOptions.role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion };\n }\n if (\n message.params.data.info === 'funding_created'\n && channelOptions.role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion };\n }\n }\n if (\n message.method === 'channels.info'\n && message.params.data.event === 'funding_signed'\n && channelOptions.role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id);\n changeStatus(channel, 'signed');\n return { handler: awaitingOnChainTx };\n }\n }\n}\n\nexport function awaitingBlockInclusion(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const handlers: {\n [key: string]: (channel: Channel, message: ChannelMessage) => ChannelFsm | undefined;\n } = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation,\n };\n const handler = handlers[message.params.data.event as string];\n if (handler != null) {\n return { handler };\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: awaitingBlockInclusion };\n }\n}\n\nexport function awaitingOpenConfirmation(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id);\n return { handler: awaitingInitialState };\n }\n}\n\nexport function awaitingInitialState(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n }\n}\n\nexport async function channelOpen(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest };\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event);\n return { handler: channelOpen };\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id);\n return { handler: channelOpen };\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen };\n case 'closing':\n changeStatus(channel, 'closing');\n return { handler: channelOpen };\n case 'closed_confirmed':\n changeStatus(channel, 'closed');\n return { handler: channelClosed };\n case 'died':\n changeStatus(channel, 'died');\n return { handler: channelClosed };\n case 'shutdown':\n return { handler: channelOpen };\n }\n break;\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: channelOpen };\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen };\n case 'channels.update':\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state);\n }\n}\nchannelOpen.enter = (channel: Channel) => {\n changeStatus(channel, 'open');\n};\n\nexport async function awaitingOffChainTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.sign.update') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingOffChainUpdate, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingOffChainUpdate, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingOffChainTx, state };\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n if (message.error != null) {\n const { data } = message.error ?? { data: [] };\n if (data.find((i) => i.code === 1001) != null) {\n state.reject(new InsufficientBalanceError('Insufficient balance'));\n } else if (data.find((i) => i.code === 1002) != null) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'));\n } else {\n state.reject(new ChannelConnectionError(message.error.message));\n }\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingOffChainUpdate(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm | undefined {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n if (message.error != null) {\n state.reject(new ChannelConnectionError(message.error.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingTxSignRequest(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) ?? [];\n const channelOptions = options.get(channel);\n if (tag != null && (channelOptions != null)) {\n if (message.params.data.tx != null) {\n const signedTx = await channelOptions.sign(tag, message.params.data.tx, {\n updates: message.params.data.updates,\n });\n if (signedTx != null) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });\n return { handler: channelOpen };\n }\n } else {\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => channelOptions.sign(tag, tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });\n return { handler: channelOpen };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } });\n return { handler: awaitingUpdateConflict, state };\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1,\n },\n });\n return { handler: awaitingUpdateConflict, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingUpdateConflict(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.error != null) {\n return { handler: awaitingUpdateConflict, state };\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingShutdownTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } });\n return { handler: awaitingShutdownOnChainTx, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx),\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } });\n return { handler: awaitingShutdownOnChainTx, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingShutdownOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingLeave(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state });\n disconnect(channel);\n return { handler: channelClosed };\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingWithdrawTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingWithdrawCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n return { handler: awaitingWithdrawCompletion, state };\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callbacks: {\n [key: string]: Function | undefined;\n } = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked,\n };\n callbacks[message.params.data.event]?.();\n return { handler: awaitingWithdrawCompletion, state };\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingDepositTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(\n message.params.data.tx,\n { updates: message.params.data.updates },\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingDepositCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n return { handler: awaitingDepositCompletion, state };\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callbacks: {\n [key: string]: Function | undefined;\n } = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked,\n };\n callbacks[message.params.data.event]?.();\n return { handler: awaitingDepositCompletion, state };\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingNewContractTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingNewContractCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n const channelOptions = options.get(channel);\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state, Tag.SignedTx).tx.encodedTx.tx;\n if (channelOptions?.role != null) {\n let role: null | 'initiatorId' | 'responderId' = null;\n if (channelOptions.role === 'initiator') role = 'initiatorId';\n if (channelOptions.role === 'responder') role = 'responderId';\n if (role != null) {\n const owner = channelOptions?.[role];\n changeState(channel, message.params.data.state);\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state,\n });\n return { handler: channelOpen };\n }\n }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingCallContractUpdateTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(\n message.params.data.tx,\n { updates: message.params.data.updates },\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingCallContractForceProgressUpdate(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx, { updates: message.params.data.updates }),\n );\n send(\n channel,\n { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } },\n );\n return { handler: awaitingForceProgressCompletion, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingForceProgressCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n state.resolve({ accepted: true, tx: message.params.data.tx });\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingCallContractCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingCallsPruned(\n _channels: Channel[],\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve();\n return { handler: channelOpen };\n }\n state.reject(new UnexpectedChannelMessageError('Unexpected message received'));\n return { handler: channelClosed };\n}\n\nexport function channelClosed(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (state == null) return { handler: channelClosed };\n if (message.params.data.event === 'closing') return { handler: channelClosed, state };\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx;\n return { handler: channelClosed, state };\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx);\n return { handler: channelClosed };\n }\n return { handler: channelClosed, state };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"handlers.mjs","names":["changeStatus","changeState","notify","emit","disconnect","unpackTx","buildTx","decode","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","ChannelError","Tag","appendSignature","tx","signFn","signatures","encodedTx","SignedTx","payloadTx","result","signatures2","tag","concat","signAndNotify","channel","method","data","signedTx","signed_tx","isError","key","error","handleUnexpectedMessage","_channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingCompletion","onSuccess","resolve","accepted","errorCode","params","error_code","errorMessage","error_msg","event","codes","map","d","code","includes","awaitingConnection","channelInfoStatus","nextStatus","awaitingChannelCreateTx","awaitingOpenConfirmation","_fsmId","fsm_id","payload","channelClosed","awaitingReconnection","_options","role","sign","awaitingOnChainTx","awaitingBlockInclusion","_","message2","info","type","_channelId","channel_id","awaitingTxSignRequest","enter","match","updates","awaitingUpdateConflict","awaitingShutdownTx","awaitingLeave","channelId","closeTx"],"sources":["../../src/channel/handlers.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n ChannelState,\n changeStatus,\n changeState,\n notify,\n emit,\n disconnect,\n ChannelMessage,\n ChannelFsm,\n SignTx,\n ChannelStatus,\n} from './internal';\nimport { unpackTx, buildTx } from '../tx/builder';\nimport { decode, Encoded } from '../utils/encoder';\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError,\n ChannelError,\n} from '../utils/errors';\nimport type Channel from './Base';\nimport { Tag } from '../tx/builder/constants';\n\nexport async function appendSignature(\n tx: Encoded.Transaction,\n signFn: SignTx,\n): Promise<Encoded.Transaction | number | null> {\n const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx);\n const payloadTx = buildTx(encodedTx);\n const result = await signFn(payloadTx);\n if (typeof result === 'string') {\n const { signatures: signatures2 } = unpackTx(result, Tag.SignedTx);\n return buildTx({\n tag: Tag.SignedTx,\n signatures: signatures.concat(signatures2),\n encodedTx: decode(payloadTx),\n });\n }\n return result;\n}\n\nexport async function signAndNotify(\n channel: Channel,\n method: string,\n data: {\n tx?: Encoded.Transaction;\n signed_tx?: Encoded.Transaction;\n },\n signFn: SignTx,\n): Promise<boolean> {\n let signedTx;\n if (data.tx != null) signedTx = await signFn(data.tx);\n else if (data.signed_tx != null) signedTx = await appendSignature(data.signed_tx, signFn);\n else throw new ChannelError('Can\\'t find transaction in message');\n const isError = typeof signedTx !== 'string';\n const key = data.tx != null ? 'tx' : 'signed_tx';\n notify(channel, method, isError ? { error: signedTx ?? 1 } : { [key]: signedTx });\n return isError;\n}\n\nexport function handleUnexpectedMessage(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n state?.reject?.(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message },\n ));\n return { handler: channelOpen };\n}\n\nexport function awaitingCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n onSuccess?: typeof handleUnexpectedMessage,\n): ChannelFsm {\n if (onSuccess != null && message.method === 'channels.update') {\n return onSuccess(channel, message, state);\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n if (message.error != null) {\n const codes = message.error.data.map((d) => d.code);\n if (codes.includes(1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'));\n } else if (codes.includes(1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'));\n } else {\n state.reject(new ChannelConnectionError(message.error.message));\n }\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingConnection(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const channelInfoStatus: string = message.params.data.event;\n\n let nextStatus: ChannelStatus | null = null;\n if (channelInfoStatus === 'channel_accept') nextStatus = 'accepted';\n if (channelInfoStatus === 'funding_created') nextStatus = 'halfSigned';\n if (nextStatus != null) {\n changeStatus(channel, nextStatus);\n return { handler: awaitingChannelCreateTx };\n }\n\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation };\n }\n if (message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n return { handler: awaitingConnection };\n }\n return { handler: awaitingConnection };\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message?.payload?.message));\n return { handler: channelClosed };\n }\n}\n\nexport async function awaitingReconnection(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n changeState(channel, (await channel.state()).signedTx);\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingChannelCreateTx(\n channel: Channel,\n message: ChannelMessage,\n): Promise<ChannelFsm | undefined> {\n const tag = channel._options.role === 'initiator' ? 'initiator_sign' : 'responder_sign';\n if (message.method === `channels.sign.${tag}`) {\n await signAndNotify(\n channel,\n `channels.${tag}`,\n message.params.data,\n async (tx) => channel._options.sign(tag, tx),\n );\n return { handler: awaitingOnChainTx };\n }\n}\n\nexport function awaitingOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n function awaitingBlockInclusion(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {\n if (message2.method === 'channels.info') {\n switch (message2.params.data.event) {\n case 'funding_created':\n case 'own_funding_locked':\n return { handler: awaitingBlockInclusion };\n case 'funding_locked':\n return { handler: awaitingOpenConfirmation };\n }\n }\n if (message2.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message2.params.data.tx, {\n info: message2.params.data.info,\n type: message2.params.data.type,\n });\n return { handler: awaitingBlockInclusion };\n }\n }\n\n if (message.method === 'channels.on_chain_tx') {\n const { info } = message.params.data;\n const { role } = channel._options;\n if ((info === 'funding_signed' && role === 'initiator')\n || (info === 'funding_created' && role === 'responder')) {\n return { handler: awaitingBlockInclusion };\n }\n }\n if (\n message.method === 'channels.info'\n && message.params.data.event === 'funding_signed'\n && channel._options.role === 'initiator'\n ) {\n channel._channelId = message.params.channel_id;\n changeStatus(channel, 'signed');\n return { handler: awaitingOnChainTx };\n }\n}\n\nfunction awaitingOpenConfirmation(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channel._channelId = message.params.channel_id;\n return {\n handler(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {\n if (message2.method === 'channels.update') {\n changeState(channel, message2.params.data.state);\n return { handler: channelOpen };\n }\n },\n };\n }\n}\n\nexport async function channelOpen(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest };\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event);\n return { handler: channelOpen };\n case 'fsm_up':\n channel._fsmId = message.params.data.fsm_id;\n return { handler: channelOpen };\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen };\n case 'closing':\n changeStatus(channel, 'closing');\n return { handler: channelOpen };\n case 'closed_confirmed':\n changeStatus(channel, 'closed');\n return { handler: channelClosed };\n case 'died':\n changeStatus(channel, 'died');\n return { handler: channelClosed };\n case 'shutdown':\n return { handler: channelOpen };\n }\n break;\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: channelOpen };\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen };\n case 'channels.update':\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state);\n }\n}\nchannelOpen.enter = (channel: Channel) => {\n changeStatus(channel, 'open');\n};\n\nasync function awaitingTxSignRequest(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) ?? [];\n if (tag == null) return handleUnexpectedMessage(channel, message, state);\n const isError = await signAndNotify(\n channel,\n `channels.${tag}`,\n message.params.data,\n async (tx) => channel._options.sign(tag, tx, { updates: message.params.data.updates }),\n );\n\n function awaitingUpdateConflict(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.error != null) {\n return { handler: awaitingUpdateConflict, state };\n }\n if (message2.method === 'channels.conflict') {\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message2, state);\n }\n return isError ? { handler: awaitingUpdateConflict, state } : { handler: channelOpen };\n}\n\nexport async function awaitingShutdownTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method !== 'channels.sign.shutdown_sign') {\n return handleUnexpectedMessage(channel, message, state);\n }\n await signAndNotify(\n channel,\n 'channels.shutdown_sign',\n message.params.data,\n async (tx) => state.sign(tx),\n );\n return {\n handler(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.method !== 'channels.on_chain_tx') {\n return handleUnexpectedMessage(channel, message2, state);\n }\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state };\n },\n state,\n };\n}\n\nexport function awaitingLeave(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state });\n disconnect(channel);\n return { handler: channelClosed };\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function channelClosed(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (state == null) return { handler: channelClosed };\n if (message.params.data.event === 'closing') return { handler: channelClosed, state };\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx;\n return { handler: channelClosed, state };\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx);\n return { handler: channelClosed };\n }\n return { handler: channelClosed, state };\n}\n"],"mappings":"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"}
@@ -1,30 +1,39 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
1
  import BigNumber from 'bignumber.js';
4
- import type Channel from '.';
2
+ import type Channel from './Base';
5
3
  import { Encoded } from '../utils/encoder';
6
4
  import { BaseError } from '../utils/errors';
7
- interface ChannelAction {
5
+ export interface ChannelAction {
8
6
  guard: (channel: Channel, state?: ChannelFsm) => boolean;
9
7
  action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;
10
8
  }
11
- export declare type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: object) => (Promise<Encoded.Transaction>);
12
- export declare type SignTx = (tx: Encoded.Transaction, options?: object) => (Promise<Encoded.Transaction | number | null>);
9
+ interface SignOptions {
10
+ updates?: any[];
11
+ [k: string]: any;
12
+ }
13
+ export type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: SignOptions) => (Promise<Encoded.Transaction>);
14
+ export type SignTx = (tx: Encoded.Transaction, options?: SignOptions) => (Promise<Encoded.Transaction | number | null>);
13
15
  export interface ChannelOptions {
14
- existingFsmId?: string;
16
+ existingFsmId?: Encoded.Bytearray;
15
17
  url: string;
16
- role: 'initiator' | 'responder';
18
+ /**
19
+ * @see {@link https://github.com/aeternity/protocol/blob/6734de2e4c7cce7e5e626caa8305fb535785131d/node/api/channels_api_usage.md#channel-establishing-parameters}
20
+ */
17
21
  initiatorId: Encoded.AccountAddress;
18
22
  responderId: Encoded.AccountAddress;
23
+ lockPeriod: number;
19
24
  pushAmount: number;
20
25
  initiatorAmount: BigNumber;
21
26
  responderAmount: BigNumber;
22
27
  channelReserve?: BigNumber | number;
23
- signedTx?: string;
24
28
  ttl?: number;
25
29
  host: string;
26
30
  port: number;
27
- lockPeriod: number;
31
+ role: 'initiator' | 'responder';
32
+ minimumDepthStrategy?: 'txfee' | 'plain';
33
+ minimumDepth?: number;
34
+ fee?: BigNumber | number;
35
+ gasPrice?: BigNumber | number;
36
+ signedTx?: string;
28
37
  existingChannelId?: string;
29
38
  offChainTx?: string;
30
39
  reconnectTx?: string;
@@ -45,7 +54,7 @@ export interface ChannelHandler extends Function {
45
54
  enter?: Function;
46
55
  }
47
56
  export interface ChannelState {
48
- signedTx: any;
57
+ signedTx: Encoded.Transaction;
49
58
  resolve: (r?: any) => void;
50
59
  reject: (e: BaseError) => void;
51
60
  sign: SignTx;
@@ -66,7 +75,6 @@ export interface ChannelFsm {
66
75
  }
67
76
  export interface ChannelMessage {
68
77
  id?: number;
69
- jsonrpc: string;
70
78
  method: string;
71
79
  params: any;
72
80
  payload?: any;
@@ -84,17 +92,15 @@ interface ChannelMessageError {
84
92
  ];
85
93
  request: ChannelMessage;
86
94
  }
87
- export declare const options: WeakMap<Channel, ChannelOptions>;
88
- export declare const status: WeakMap<Channel, string>;
89
- export declare const state: WeakMap<Channel, `tx_${string}`>;
90
- export declare const eventEmitters: WeakMap<Channel, EventEmitter>;
91
- export declare const channelId: WeakMap<Channel, string>;
92
- export declare const fsmId: WeakMap<Channel, string>;
93
95
  export declare function emit(channel: Channel, ...args: any[]): void;
94
- export declare function changeStatus(channel: Channel, newStatus: string): void;
96
+ export type ChannelStatus = 'connecting' | 'connected' | 'accepted' | 'halfSigned' | 'signed' | 'open' | 'closing' | 'closed' | 'died' | 'disconnected';
97
+ export declare function changeStatus(channel: Channel, newStatus: ChannelStatus): void;
95
98
  export declare function changeState(channel: Channel, newState: Encoded.Transaction): void;
96
- export declare function send(channel: Channel, message: ChannelMessage): void;
97
- export declare function enqueueAction(channel: Channel, guard: ChannelAction['guard'], action: ChannelAction['action']): void;
99
+ export declare function notify(channel: Channel, method: string, params?: object): void;
100
+ export declare function enqueueAction(channel: Channel, guard: ChannelAction['guard'], action: () => {
101
+ handler: ChannelHandler;
102
+ state?: Partial<ChannelState>;
103
+ }): Promise<any>;
98
104
  export declare function disconnect(channel: Channel): void;
99
105
  export declare function call(channel: Channel, method: string, params: any): Promise<any>;
100
106
  export declare function initialize(channel: Channel, connectionHandler: Function, openHandler: Function, { url, ...channelOptions }: ChannelOptions): Promise<void>;