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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.map +1 -1
  3. package/dist/aepp-sdk.browser.js +1 -1
  4. package/dist/aepp-sdk.browser.js.map +1 -1
  5. package/dist/aepp-sdk.js +6580 -8859
  6. package/dist/aepp-sdk.js.map +1 -1
  7. package/es/AeSdk.d.ts +7 -3
  8. package/es/AeSdk.mjs +17 -22
  9. package/es/AeSdk.mjs.map +1 -1
  10. package/es/AeSdkAepp.d.ts +6 -5
  11. package/es/AeSdkAepp.mjs +7 -30
  12. package/es/AeSdkAepp.mjs.map +1 -1
  13. package/es/AeSdkBase.d.ts +18 -140
  14. package/es/AeSdkBase.mjs +27 -185
  15. package/es/AeSdkBase.mjs.map +1 -1
  16. package/es/AeSdkMethods.d.ts +124 -0
  17. package/es/AeSdkMethods.mjs +122 -0
  18. package/es/AeSdkMethods.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +7 -21
  20. package/es/AeSdkWallet.mjs +38 -86
  21. package/es/AeSdkWallet.mjs.map +1 -1
  22. package/es/Node.d.ts +7 -12
  23. package/es/Node.mjs +34 -47
  24. package/es/Node.mjs.map +1 -1
  25. package/es/account/Base.d.ts +24 -40
  26. package/es/account/Base.mjs +1 -101
  27. package/es/account/Base.mjs.map +1 -1
  28. package/es/account/Generalized.d.ts +16 -0
  29. package/es/account/Generalized.mjs +111 -0
  30. package/es/account/Generalized.mjs.map +1 -0
  31. package/es/account/Ledger.d.ts +28 -0
  32. package/es/account/Ledger.mjs +101 -0
  33. package/es/account/Ledger.mjs.map +1 -0
  34. package/es/account/LedgerFactory.d.ts +39 -0
  35. package/es/account/LedgerFactory.mjs +81 -0
  36. package/es/account/LedgerFactory.mjs.map +1 -0
  37. package/es/account/Memory.d.ts +13 -17
  38. package/es/account/Memory.mjs +43 -65
  39. package/es/account/Memory.mjs.map +1 -1
  40. package/es/account/Rpc.d.ts +6 -8
  41. package/es/account/Rpc.mjs +14 -32
  42. package/es/account/Rpc.mjs.map +1 -1
  43. package/es/aens.d.ts +3 -3
  44. package/es/aens.mjs +42 -41
  45. package/es/aens.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
  47. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  48. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +3 -7
  49. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
  51. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
  52. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  53. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  54. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
  55. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -41
  56. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  57. package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
  58. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/schema.mjs +14 -68
  60. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
  62. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  63. package/es/apis/compiler/compiler.d.ts +23 -29
  64. package/es/apis/compiler/compiler.mjs +128 -189
  65. package/es/apis/compiler/compiler.mjs.map +1 -1
  66. package/es/apis/compiler/index.mjs.map +1 -1
  67. package/es/apis/compiler/models/index.d.ts +82 -135
  68. package/es/apis/compiler/models/index.mjs +1 -47
  69. package/es/apis/compiler/models/index.mjs.map +1 -1
  70. package/es/apis/compiler/models/mappers.d.ts +8 -8
  71. package/es/apis/compiler/models/mappers.mjs +165 -183
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  73. package/es/apis/compiler/models/parameters.d.ts +0 -1
  74. package/es/apis/compiler/models/parameters.mjs +5 -9
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  76. package/es/apis/node/index.mjs.map +1 -1
  77. package/es/apis/node/models/index.d.ts +48 -48
  78. package/es/apis/node/models/mappers.mjs +12 -6
  79. package/es/apis/node/models/mappers.mjs.map +1 -1
  80. package/es/apis/node/models/parameters.mjs.map +1 -1
  81. package/es/apis/node/node.mjs +43 -84
  82. package/es/apis/node/node.mjs.map +1 -1
  83. package/es/chain.d.ts +1 -1
  84. package/es/chain.mjs +33 -58
  85. package/es/chain.mjs.map +1 -1
  86. package/es/channel/Base.d.ts +195 -0
  87. package/es/channel/Base.mjs +290 -0
  88. package/es/channel/Base.mjs.map +1 -0
  89. package/es/channel/Contract.d.ts +247 -0
  90. package/es/channel/Contract.mjs +420 -0
  91. package/es/channel/Contract.mjs.map +1 -0
  92. package/es/channel/Spend.d.ts +217 -0
  93. package/es/channel/Spend.mjs +383 -0
  94. package/es/channel/Spend.mjs.map +1 -0
  95. package/es/channel/handlers.d.ts +8 -21
  96. package/es/channel/handlers.mjs +141 -891
  97. package/es/channel/handlers.mjs.map +1 -1
  98. package/es/channel/internal.d.ts +27 -21
  99. package/es/channel/internal.mjs +98 -190
  100. package/es/channel/internal.mjs.map +1 -1
  101. package/es/contract/{Compiler.d.ts → CompilerHttp.d.ts} +3 -3
  102. package/es/contract/{Compiler.mjs → CompilerHttp.mjs} +8 -13
  103. package/es/contract/CompilerHttp.mjs.map +1 -0
  104. package/es/contract/Contract.d.ts +235 -0
  105. package/es/contract/Contract.mjs +534 -0
  106. package/es/contract/Contract.mjs.map +1 -0
  107. package/es/contract/ga.d.ts +7 -33
  108. package/es/contract/ga.mjs +20 -112
  109. package/es/contract/ga.mjs.map +1 -1
  110. package/es/index.d.ts +9 -6
  111. package/es/index.mjs +8 -6
  112. package/es/index.mjs.map +1 -1
  113. package/es/oracle.d.ts +5 -5
  114. package/es/oracle.mjs +33 -39
  115. package/es/oracle.mjs.map +1 -1
  116. package/es/spend.d.ts +3 -3
  117. package/es/spend.mjs +17 -20
  118. package/es/spend.mjs.map +1 -1
  119. package/es/tx/builder/constants.d.ts +2 -1
  120. package/es/tx/builder/constants.mjs +12 -12
  121. package/es/tx/builder/constants.mjs.map +1 -1
  122. package/es/tx/builder/field-types/address.d.ts +15 -0
  123. package/es/tx/builder/field-types/address.mjs +42 -0
  124. package/es/tx/builder/field-types/address.mjs.map +1 -0
  125. package/es/tx/builder/field-types/addresses.d.ts +6 -0
  126. package/es/tx/builder/field-types/addresses.mjs +13 -0
  127. package/es/tx/builder/field-types/addresses.mjs.map +1 -0
  128. package/es/tx/builder/field-types/coin-amount.d.ts +1 -2
  129. package/es/tx/builder/field-types/coin-amount.mjs +4 -12
  130. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  131. package/es/tx/builder/field-types/deposit.d.ts +0 -1
  132. package/es/tx/builder/field-types/deposit.mjs +2 -4
  133. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  134. package/es/tx/builder/field-types/enumeration.d.ts +5 -0
  135. package/es/tx/builder/field-types/enumeration.mjs +21 -0
  136. package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
  137. package/es/tx/builder/field-types/fee.d.ts +1 -9
  138. package/es/tx/builder/field-types/fee.mjs +9 -25
  139. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  140. package/es/tx/builder/field-types/field.mjs +0 -2
  141. package/es/tx/builder/field-types/field.mjs.map +1 -1
  142. package/es/tx/builder/field-types/gas-limit.mjs +4 -9
  143. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  144. package/es/tx/builder/field-types/gas-price.d.ts +1 -2
  145. package/es/tx/builder/field-types/gas-price.mjs +3 -7
  146. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  147. package/es/tx/builder/field-types/index.d.ts +23 -11
  148. package/es/tx/builder/field-types/index.mjs +10 -3
  149. package/es/tx/builder/field-types/index.mjs.map +1 -1
  150. package/es/tx/builder/field-types/name-fee.d.ts +0 -1
  151. package/es/tx/builder/field-types/name-fee.mjs +3 -5
  152. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  153. package/es/tx/builder/field-types/name-id.d.ts +1 -4
  154. package/es/tx/builder/field-types/name-id.mjs +4 -10
  155. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  156. package/es/tx/builder/field-types/name.mjs +0 -2
  157. package/es/tx/builder/field-types/name.mjs.map +1 -1
  158. package/es/tx/builder/field-types/pointers.d.ts +23 -0
  159. package/es/tx/builder/field-types/pointers.mjs +36 -0
  160. package/es/tx/builder/field-types/pointers.mjs.map +1 -0
  161. package/es/tx/builder/field-types/short-u-int.mjs +0 -2
  162. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  163. package/es/tx/builder/field-types/u-int.d.ts +1 -1
  164. package/es/tx/builder/field-types/u-int.mjs +3 -4
  165. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  166. package/es/tx/builder/helpers.d.ts +2 -32
  167. package/es/tx/builder/helpers.mjs +19 -71
  168. package/es/tx/builder/helpers.mjs.map +1 -1
  169. package/es/tx/builder/index.d.ts +1 -21
  170. package/es/tx/builder/index.mjs +29 -148
  171. package/es/tx/builder/index.mjs.map +1 -1
  172. package/es/tx/builder/schema.d.ts +336 -176
  173. package/es/tx/builder/schema.mjs +71 -78
  174. package/es/tx/builder/schema.mjs.map +1 -1
  175. package/es/tx/index.d.ts +3 -33
  176. package/es/tx/index.mjs +26 -43
  177. package/es/tx/index.mjs.map +1 -1
  178. package/es/tx/validator.d.ts +2 -2
  179. package/es/tx/validator.mjs +86 -59
  180. package/es/tx/validator.mjs.map +1 -1
  181. package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
  182. package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
  183. package/es/utils/amount-formatter.mjs +4 -10
  184. package/es/utils/amount-formatter.mjs.map +1 -1
  185. package/es/utils/autorest.d.ts +1 -0
  186. package/es/utils/autorest.mjs +17 -19
  187. package/es/utils/autorest.mjs.map +1 -1
  188. package/es/utils/bignumber.mjs +4 -7
  189. package/es/utils/bignumber.mjs.map +1 -1
  190. package/es/utils/bytes.d.ts +0 -17
  191. package/es/utils/bytes.mjs +6 -35
  192. package/es/utils/bytes.mjs.map +1 -1
  193. package/es/utils/crypto.d.ts +15 -8
  194. package/es/utils/crypto.mjs +40 -40
  195. package/es/utils/crypto.mjs.map +1 -1
  196. package/es/utils/encoder-types.d.ts +28 -28
  197. package/es/utils/encoder-types.mjs +0 -1
  198. package/es/utils/encoder-types.mjs.map +1 -1
  199. package/es/utils/encoder.d.ts +0 -1
  200. package/es/utils/encoder.mjs +7 -15
  201. package/es/utils/encoder.mjs.map +1 -1
  202. package/es/utils/errors.d.ts +12 -6
  203. package/es/utils/errors.mjs +87 -163
  204. package/es/utils/errors.mjs.map +1 -1
  205. package/es/utils/hd-wallet.d.ts +27 -19
  206. package/es/utils/hd-wallet.mjs +42 -26
  207. package/es/utils/hd-wallet.mjs.map +1 -1
  208. package/es/utils/json-big.mjs +0 -8
  209. package/es/utils/json-big.mjs.map +1 -1
  210. package/es/utils/keystore.d.ts +2 -0
  211. package/es/utils/keystore.mjs +37 -36
  212. package/es/utils/keystore.mjs.map +1 -1
  213. package/es/utils/mptree.d.ts +1 -1
  214. package/es/utils/mptree.mjs +4 -26
  215. package/es/utils/mptree.mjs.map +1 -1
  216. package/es/utils/other.d.ts +3 -1
  217. package/es/utils/other.mjs +11 -7
  218. package/es/utils/other.mjs.map +1 -1
  219. package/es/utils/semver-satisfies.mjs +0 -3
  220. package/es/utils/semver-satisfies.mjs.map +1 -1
  221. package/es/utils/string.d.ts +0 -12
  222. package/es/utils/string.mjs +1 -21
  223. package/es/utils/string.mjs.map +1 -1
  224. package/package.json +86 -47
  225. package/src/AeSdk.ts +15 -11
  226. package/src/AeSdkAepp.ts +9 -7
  227. package/src/AeSdkBase.ts +28 -202
  228. package/src/AeSdkMethods.ts +170 -0
  229. package/src/AeSdkWallet.ts +16 -47
  230. package/src/Node.ts +11 -15
  231. package/src/account/Base.ts +29 -75
  232. package/src/account/Generalized.ts +98 -0
  233. package/src/account/Ledger.ts +131 -0
  234. package/src/account/LedgerFactory.ts +86 -0
  235. package/src/account/Memory.ts +46 -60
  236. package/src/account/Rpc.ts +17 -26
  237. package/src/aens.ts +10 -9
  238. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +5 -4
  239. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
  240. package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
  241. package/src/aepp-wallet-communication/rpc/types.ts +11 -1
  242. package/src/aepp-wallet-communication/schema.ts +18 -18
  243. package/src/apis/compiler/code-model-v4.yaml +681 -888
  244. package/src/apis/compiler/compiler.ts +113 -154
  245. package/src/apis/compiler/models/index.ts +80 -140
  246. package/src/apis/compiler/models/mappers.ts +165 -183
  247. package/src/apis/compiler/models/parameters.ts +6 -12
  248. package/src/chain.ts +6 -3
  249. package/src/channel/Base.ts +327 -0
  250. package/src/channel/Contract.ts +487 -0
  251. package/src/channel/Spend.ts +403 -0
  252. package/src/channel/handlers.ts +154 -573
  253. package/src/channel/internal.ts +113 -142
  254. package/src/contract/{Compiler.ts → CompilerHttp.ts} +5 -5
  255. package/src/contract/Contract.ts +620 -0
  256. package/src/contract/ga.ts +18 -104
  257. package/src/index.ts +9 -8
  258. package/src/oracle.ts +7 -7
  259. package/src/spend.ts +5 -13
  260. package/src/tx/builder/constants.ts +1 -0
  261. package/src/tx/builder/field-types/address.ts +52 -0
  262. package/src/tx/builder/field-types/addresses.ts +18 -0
  263. package/src/tx/builder/field-types/coin-amount.ts +2 -8
  264. package/src/tx/builder/field-types/enumeration.ts +21 -0
  265. package/src/tx/builder/field-types/fee.ts +1 -3
  266. package/src/tx/builder/field-types/gas-limit.ts +2 -2
  267. package/src/tx/builder/field-types/gas-price.ts +0 -2
  268. package/src/tx/builder/field-types/index.ts +16 -6
  269. package/src/tx/builder/field-types/name-fee.ts +1 -1
  270. package/src/tx/builder/field-types/name-id.ts +7 -10
  271. package/src/tx/builder/field-types/pointers.ts +41 -0
  272. package/src/tx/builder/field-types/u-int.ts +3 -2
  273. package/src/tx/builder/helpers.ts +10 -60
  274. package/src/tx/builder/index.ts +6 -65
  275. package/src/tx/builder/schema.ts +89 -100
  276. package/src/tx/index.ts +19 -15
  277. package/src/tx/validator.ts +36 -18
  278. package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
  279. package/src/utils/autorest.ts +16 -1
  280. package/src/utils/bytes.ts +5 -33
  281. package/src/utils/crypto.ts +23 -16
  282. package/src/utils/encoder.ts +0 -1
  283. package/src/utils/errors.ts +18 -12
  284. package/src/utils/hd-wallet.ts +30 -9
  285. package/src/utils/keystore.ts +24 -21
  286. package/src/utils/other.ts +16 -1
  287. package/src/utils/string.ts +0 -20
  288. package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
  289. package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
  290. package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
  291. package/types-legacy/ts4.2/AeSdkMethods.d.ts +141 -0
  292. package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
  293. package/types-legacy/ts4.2/Node.d.ts +78 -0
  294. package/types-legacy/ts4.2/account/Base.d.ts +52 -0
  295. package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
  296. package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
  297. package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
  298. package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
  299. package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
  300. package/types-legacy/ts4.2/aens.d.ts +222 -0
  301. package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  302. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  303. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  304. package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  305. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  306. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
  307. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
  308. package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  309. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
  310. package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
  311. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
  312. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
  313. package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
  314. package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
  315. package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
  316. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
  317. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
  318. package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
  319. package/types-legacy/ts4.2/chain.d.ts +248 -0
  320. package/types-legacy/ts4.2/channel/Base.d.ts +194 -0
  321. package/types-legacy/ts4.2/channel/Contract.d.ts +247 -0
  322. package/types-legacy/ts4.2/channel/Spend.d.ts +217 -0
  323. package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
  324. package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
  325. package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +18 -0
  326. package/types-legacy/ts4.2/contract/Contract.d.ts +237 -0
  327. package/types-legacy/ts4.2/contract/ga.d.ts +43 -0
  328. package/types-legacy/ts4.2/globals.d.ts +16 -0
  329. package/types-legacy/ts4.2/index.d.ts +39 -0
  330. package/types-legacy/ts4.2/oracle.d.ts +161 -0
  331. package/types-legacy/ts4.2/spend.d.ts +62 -0
  332. package/types-legacy/ts4.2/tx/builder/constants.d.ts +71 -0
  333. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +22 -0
  334. package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +6 -0
  335. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
  336. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
  337. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -0
  338. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +17 -0
  339. package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
  340. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +12 -0
  341. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
  342. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +85 -0
  343. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +19 -0
  344. package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
  345. package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
  346. package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
  347. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
  348. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +8 -0
  349. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
  350. package/types-legacy/ts4.2/tx/builder/index.d.ts +68 -0
  351. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2963 -0
  352. package/types-legacy/ts4.2/tx/index.d.ts +34 -0
  353. package/types-legacy/ts4.2/tx/validator.d.ts +20 -0
  354. package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
  355. package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
  356. package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
  357. package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
  358. package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
  359. package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
  360. package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
  361. package/types-legacy/ts4.2/utils/errors.d.ts +480 -0
  362. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
  363. package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
  364. package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
  365. package/types-legacy/ts4.2/utils/mptree.d.ts +32 -0
  366. package/types-legacy/ts4.2/utils/other.d.ts +31 -0
  367. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
  368. package/types-legacy/ts4.2/utils/string.d.ts +12 -0
  369. package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
  370. package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
  371. package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
  372. package/types-legacy/ts4.5/AeSdkMethods.d.ts +141 -0
  373. package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
  374. package/types-legacy/ts4.5/Node.d.ts +78 -0
  375. package/types-legacy/ts4.5/account/Base.d.ts +52 -0
  376. package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
  377. package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
  378. package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
  379. package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
  380. package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
  381. package/types-legacy/ts4.5/aens.d.ts +222 -0
  382. package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  383. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  384. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  385. package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  386. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  387. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
  388. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
  389. package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  390. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
  391. package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
  392. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
  393. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
  394. package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
  395. package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
  396. package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
  397. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
  398. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
  399. package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
  400. package/types-legacy/ts4.5/chain.d.ts +248 -0
  401. package/types-legacy/ts4.5/channel/Base.d.ts +194 -0
  402. package/types-legacy/ts4.5/channel/Contract.d.ts +247 -0
  403. package/types-legacy/ts4.5/channel/Spend.d.ts +217 -0
  404. package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
  405. package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
  406. package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +18 -0
  407. package/types-legacy/ts4.5/contract/Contract.d.ts +237 -0
  408. package/types-legacy/ts4.5/contract/ga.d.ts +43 -0
  409. package/types-legacy/ts4.5/index.d.ts +38 -0
  410. package/types-legacy/ts4.5/oracle.d.ts +161 -0
  411. package/types-legacy/ts4.5/spend.d.ts +62 -0
  412. package/types-legacy/ts4.5/tx/builder/constants.d.ts +71 -0
  413. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +22 -0
  414. package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +6 -0
  415. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
  416. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
  417. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -0
  418. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +17 -0
  419. package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
  420. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +12 -0
  421. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
  422. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +85 -0
  423. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +19 -0
  424. package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
  425. package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
  426. package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
  427. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
  428. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +8 -0
  429. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
  430. package/types-legacy/ts4.5/tx/builder/index.d.ts +68 -0
  431. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2963 -0
  432. package/types-legacy/ts4.5/tx/index.d.ts +34 -0
  433. package/types-legacy/ts4.5/tx/validator.d.ts +20 -0
  434. package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
  435. package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
  436. package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
  437. package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
  438. package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
  439. package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
  440. package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
  441. package/types-legacy/ts4.5/utils/errors.d.ts +480 -0
  442. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
  443. package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
  444. package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
  445. package/types-legacy/ts4.5/utils/mptree.d.ts +32 -0
  446. package/types-legacy/ts4.5/utils/other.d.ts +31 -0
  447. package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
  448. package/types-legacy/ts4.5/utils/string.d.ts +12 -0
  449. package/es/channel/index.d.ts +0 -625
  450. package/es/channel/index.mjs +0 -975
  451. package/es/channel/index.mjs.map +0 -1
  452. package/es/contract/Compiler.mjs.map +0 -1
  453. package/es/contract/aci.d.ts +0 -127
  454. package/es/contract/aci.mjs +0 -508
  455. package/es/contract/aci.mjs.map +0 -1
  456. package/es/contract/methods.d.ts +0 -71
  457. package/es/contract/methods.mjs +0 -104
  458. package/es/contract/methods.mjs.map +0 -1
  459. package/es/deprecated/index.d.ts +0 -143
  460. package/es/deprecated/index.mjs +0 -162
  461. package/es/deprecated/index.mjs.map +0 -1
  462. package/es/deprecated/methods.d.ts +0 -18
  463. package/es/deprecated/methods.mjs +0 -26
  464. package/es/deprecated/methods.mjs.map +0 -1
  465. package/es/tx/builder/address.d.ts +0 -25
  466. package/es/tx/builder/address.mjs +0 -45
  467. package/es/tx/builder/address.mjs.map +0 -1
  468. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
  469. package/src/channel/index.ts +0 -1025
  470. package/src/contract/aci.ts +0 -537
  471. package/src/contract/methods.ts +0 -123
  472. package/src/deprecated/index.ts +0 -172
  473. package/src/deprecated/methods.ts +0 -25
  474. package/src/tx/builder/address.ts +0 -50
  475. package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
@@ -0,0 +1,195 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { EventEmitter } from 'events';
4
+ import { w3cwebsocket as W3CWebSocket } from 'websocket';
5
+ import { SignTx, ChannelOptions, ChannelState, ChannelHandler, ChannelAction, ChannelStatus, ChannelFsm } from './internal';
6
+ import { Encoded } from '../utils/encoder';
7
+ type EventCallback = (...args: any[]) => void;
8
+ /**
9
+ * Channel
10
+ * @example
11
+ * ```js
12
+ * await Channel.initialize({
13
+ * url: 'ws://localhost:3001',
14
+ * role: 'initiator'
15
+ * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',
16
+ * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',
17
+ * initiatorAmount: 1e18,
18
+ * responderAmount: 1e18,
19
+ * pushAmount: 0,
20
+ * channelReserve: 0,
21
+ * ttl: 1000,
22
+ * host: 'localhost',
23
+ * port: 3002,
24
+ * lockPeriod: 10,
25
+ * async sign (tag, tx) => await account.signTransaction(tx)
26
+ * })
27
+ * ```
28
+ */
29
+ export default class Channel {
30
+ _eventEmitter: EventEmitter;
31
+ _pingTimeoutId: NodeJS.Timeout;
32
+ _nextRpcMessageId: number;
33
+ _rpcCallbacks: Map<number, (message: object) => void>;
34
+ _fsmId?: Encoded.Bytearray;
35
+ _messageQueue: object[];
36
+ _isMessageQueueLocked: boolean;
37
+ _actionQueue: ChannelAction[];
38
+ _isActionQueueLocked: boolean;
39
+ _status: ChannelStatus;
40
+ _fsm: ChannelFsm;
41
+ _websocket: W3CWebSocket;
42
+ _state?: Encoded.Transaction;
43
+ _options: ChannelOptions;
44
+ _channelId?: Encoded.Channel;
45
+ /**
46
+ * @param options - Channel params
47
+ * @param options.url - Channel url (for example: "ws://localhost:3001")
48
+ * @param options.role - Participant role ("initiator" or "responder")
49
+ * @param options.initiatorId - Initiator's public key
50
+ * @param options.responderId - Responder's public key
51
+ * @param options.pushAmount - Initial deposit in favour of the responder by the initiator
52
+ * @param options.initiatorAmount - Amount of coins the initiator has committed to
53
+ * the channel
54
+ * @param options.responderAmount - Amount of coins the responder has committed to
55
+ * the channel
56
+ * @param options.channelReserve - The minimum amount both peers need to maintain
57
+ * @param options.ttl - Minimum block height to include the channel_create_tx
58
+ * @param options.host - Host of the responder's node
59
+ * @param options.port - The port of the responders node
60
+ * @param options.lockPeriod - Amount of blocks for disputing a solo close
61
+ * @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)
62
+ * @param options.minimumDepth - The minimum amount of blocks to be mined
63
+ * @param options.fee - The fee to be used for the channel open transaction
64
+ * @param options.gasPrice - Used for the fee computation of the channel open transaction
65
+ * @param options.existingChannelId - Existing channel id (required if reestablishing a
66
+ * channel)
67
+ * @param options.offchainTx - Offchain transaction (required if reestablishing
68
+ * a channel)
69
+ * @param options.timeoutIdle - The time waiting for a new event to be initiated
70
+ * (default: 600000)
71
+ * @param options.timeoutFundingCreate - The time waiting for the initiator to produce
72
+ * the create channel transaction after the noise session had been established (default: 120000)
73
+ * @param options.timeoutFundingSign - The time frame the other client has to sign an
74
+ * off-chain update after our client had initiated and signed it. This applies only for double
75
+ * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.
76
+ * (default: 120000)
77
+ * @param options.timeoutFundingLock - The time frame the other client has to confirm an
78
+ * on-chain transaction reaching maturity (passing minimum depth) after the local node has
79
+ * detected this. This applies only for double signed on-chain intended updates: channel create
80
+ * transaction, deposit, withdrawal and etc. (default: 360000)
81
+ * @param options.timeoutSign - The time frame the client has to return a signed
82
+ * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)
83
+ * @param options.timeoutAccept - The time frame the other client has to react to an
84
+ * event. This applies for all off-chain updates that are not meant to land on-chain, as well as
85
+ * some special cases: opening a noise connection, mutual closing acknowledgement and
86
+ * reestablishing an existing channel (default: 120000)
87
+ * @param options.timeoutInitialized - the time frame the responder has to accept an
88
+ * incoming noise session. Applicable only for initiator (default: timeout_accept's value)
89
+ * @param options.timeoutAwaitingOpen - The time frame the initiator has to start an
90
+ * outgoing noise session to the responder's node. Applicable only for responder (default:
91
+ * timeout_idle's value)
92
+ * @param options.debug=false - Log websocket communication
93
+ * @param options.sign - Function which verifies and signs transactions
94
+ */
95
+ static initialize(options: ChannelOptions): Promise<Channel>;
96
+ static _initialize<T extends Channel>(channel: T, options: ChannelOptions): Promise<T>;
97
+ /**
98
+ * Register event listener function
99
+ *
100
+ * Possible events:
101
+ *
102
+ * - "error"
103
+ * - "onChainTx"
104
+ * - "ownWithdrawLocked"
105
+ * - "withdrawLocked"
106
+ * - "ownDepositLocked"
107
+ * - "depositLocked"
108
+ *
109
+ * TODO: the event list looks outdated
110
+ *
111
+ * @param eventName - Event name
112
+ * @param callback - Callback function
113
+ */
114
+ on(eventName: string, callback: EventCallback): void;
115
+ /**
116
+ * Remove event listener function
117
+ * @param eventName - Event name
118
+ * @param callback - Callback function
119
+ */
120
+ off(eventName: string, callback: EventCallback): void;
121
+ /**
122
+ * Close the connection
123
+ */
124
+ disconnect(): void;
125
+ /**
126
+ * Get current status
127
+ */
128
+ status(): ChannelStatus;
129
+ /**
130
+ * Get current state
131
+ */
132
+ state(): Promise<ChannelState>;
133
+ /**
134
+ * Get current round
135
+ *
136
+ * If round cannot be determined (for example when channel has not been opened)
137
+ * it will return `null`.
138
+ */
139
+ round(): number | null;
140
+ /**
141
+ * Get channel id
142
+ *
143
+ */
144
+ id(): Encoded.Channel;
145
+ /**
146
+ * Get channel's fsm id
147
+ *
148
+ */
149
+ fsmId(): Encoded.Bytearray;
150
+ protected enqueueAction(action: () => {
151
+ handler: ChannelHandler;
152
+ state?: Partial<ChannelState>;
153
+ }): Promise<any>;
154
+ /**
155
+ * Leave channel
156
+ *
157
+ * It is possible to leave a channel and then later reestablish the channel
158
+ * off-chain state and continue operation. When a leave method is called,
159
+ * the channel fsm passes it on to the peer fsm, reports the current mutually
160
+ * signed state and then terminates.
161
+ *
162
+ * The channel can be reestablished by instantiating another Channel instance
163
+ * with two extra params: existingChannelId and offchainTx (returned from leave
164
+ * method as channelId and signedTx respectively).
165
+ *
166
+ * @example
167
+ * ```js
168
+ * channel.leave().then(({ channelId, signedTx }) => {
169
+ * console.log(channelId)
170
+ * console.log(signedTx)
171
+ * })
172
+ * ```
173
+ */
174
+ leave(): Promise<{
175
+ channelId: Encoded.Bytearray;
176
+ signedTx: Encoded.Transaction;
177
+ }>;
178
+ /**
179
+ * Trigger mutual close
180
+ *
181
+ * At any moment after the channel is opened, a closing procedure can be triggered.
182
+ * This can be done by either of the parties. The process is similar to the off-chain updates.
183
+ *
184
+ * @param sign - Function which verifies and signs mutual close transaction
185
+ * @example
186
+ * ```js
187
+ * channel.shutdown(
188
+ * async (tx) => await account.signTransaction(tx)
189
+ * ).then(tx => console.log('on_chain_tx', tx))
190
+ * ```
191
+ */
192
+ shutdown(sign: SignTx): Promise<Encoded.Transaction>;
193
+ static reconnect(options: ChannelOptions, txParams: any): Promise<Channel>;
194
+ }
195
+ export {};
@@ -0,0 +1,290 @@
1
+ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
+ /*
3
+ * ISC License (ISC)
4
+ * Copyright (c) 2022 aeternity developers
5
+ *
6
+ * Permission to use, copy, modify, and/or distribute this software for any
7
+ * purpose with or without fee is hereby granted, provided that the above
8
+ * copyright notice and this permission notice appear in all copies.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
13
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
+ * PERFORMANCE OF THIS SOFTWARE.
17
+ */
18
+ import _events from 'events';
19
+ const {
20
+ EventEmitter
21
+ } = _events;
22
+ import { snakeToPascal } from "../utils/string.mjs";
23
+ import { buildTx, unpackTx } from "../tx/builder/index.mjs";
24
+ import { Tag } from "../tx/builder/constants.mjs";
25
+ import * as handlers from "./handlers.mjs";
26
+ import { initialize, enqueueAction, notify, call, disconnect as channelDisconnect } from "./internal.mjs";
27
+ import { ChannelError } from "../utils/errors.mjs";
28
+ function snakeToPascalObjKeys(obj) {
29
+ return Object.entries(obj).reduce((result, _ref) => {
30
+ let [key, val] = _ref;
31
+ return {
32
+ ...result,
33
+ [snakeToPascal(key)]: val
34
+ };
35
+ }, {});
36
+ }
37
+ /**
38
+ * Channel
39
+ * @example
40
+ * ```js
41
+ * await Channel.initialize({
42
+ * url: 'ws://localhost:3001',
43
+ * role: 'initiator'
44
+ * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',
45
+ * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',
46
+ * initiatorAmount: 1e18,
47
+ * responderAmount: 1e18,
48
+ * pushAmount: 0,
49
+ * channelReserve: 0,
50
+ * ttl: 1000,
51
+ * host: 'localhost',
52
+ * port: 3002,
53
+ * lockPeriod: 10,
54
+ * async sign (tag, tx) => await account.signTransaction(tx)
55
+ * })
56
+ * ```
57
+ */
58
+ export default class Channel {
59
+ constructor() {
60
+ _defineProperty(this, "_eventEmitter", new EventEmitter());
61
+ _defineProperty(this, "_nextRpcMessageId", 0);
62
+ _defineProperty(this, "_rpcCallbacks", new Map());
63
+ _defineProperty(this, "_messageQueue", []);
64
+ _defineProperty(this, "_isMessageQueueLocked", false);
65
+ _defineProperty(this, "_actionQueue", []);
66
+ _defineProperty(this, "_isActionQueueLocked", false);
67
+ _defineProperty(this, "_status", 'disconnected');
68
+ }
69
+ /**
70
+ * @param options - Channel params
71
+ * @param options.url - Channel url (for example: "ws://localhost:3001")
72
+ * @param options.role - Participant role ("initiator" or "responder")
73
+ * @param options.initiatorId - Initiator's public key
74
+ * @param options.responderId - Responder's public key
75
+ * @param options.pushAmount - Initial deposit in favour of the responder by the initiator
76
+ * @param options.initiatorAmount - Amount of coins the initiator has committed to
77
+ * the channel
78
+ * @param options.responderAmount - Amount of coins the responder has committed to
79
+ * the channel
80
+ * @param options.channelReserve - The minimum amount both peers need to maintain
81
+ * @param options.ttl - Minimum block height to include the channel_create_tx
82
+ * @param options.host - Host of the responder's node
83
+ * @param options.port - The port of the responders node
84
+ * @param options.lockPeriod - Amount of blocks for disputing a solo close
85
+ * @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)
86
+ * @param options.minimumDepth - The minimum amount of blocks to be mined
87
+ * @param options.fee - The fee to be used for the channel open transaction
88
+ * @param options.gasPrice - Used for the fee computation of the channel open transaction
89
+ * @param options.existingChannelId - Existing channel id (required if reestablishing a
90
+ * channel)
91
+ * @param options.offchainTx - Offchain transaction (required if reestablishing
92
+ * a channel)
93
+ * @param options.timeoutIdle - The time waiting for a new event to be initiated
94
+ * (default: 600000)
95
+ * @param options.timeoutFundingCreate - The time waiting for the initiator to produce
96
+ * the create channel transaction after the noise session had been established (default: 120000)
97
+ * @param options.timeoutFundingSign - The time frame the other client has to sign an
98
+ * off-chain update after our client had initiated and signed it. This applies only for double
99
+ * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.
100
+ * (default: 120000)
101
+ * @param options.timeoutFundingLock - The time frame the other client has to confirm an
102
+ * on-chain transaction reaching maturity (passing minimum depth) after the local node has
103
+ * detected this. This applies only for double signed on-chain intended updates: channel create
104
+ * transaction, deposit, withdrawal and etc. (default: 360000)
105
+ * @param options.timeoutSign - The time frame the client has to return a signed
106
+ * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)
107
+ * @param options.timeoutAccept - The time frame the other client has to react to an
108
+ * event. This applies for all off-chain updates that are not meant to land on-chain, as well as
109
+ * some special cases: opening a noise connection, mutual closing acknowledgement and
110
+ * reestablishing an existing channel (default: 120000)
111
+ * @param options.timeoutInitialized - the time frame the responder has to accept an
112
+ * incoming noise session. Applicable only for initiator (default: timeout_accept's value)
113
+ * @param options.timeoutAwaitingOpen - The time frame the initiator has to start an
114
+ * outgoing noise session to the responder's node. Applicable only for responder (default:
115
+ * timeout_idle's value)
116
+ * @param options.debug=false - Log websocket communication
117
+ * @param options.sign - Function which verifies and signs transactions
118
+ */
119
+ static async initialize(options) {
120
+ return Channel._initialize(new Channel(), options);
121
+ }
122
+ static async _initialize(channel, options) {
123
+ await initialize(channel, options.existingFsmId != null ? handlers.awaitingReconnection : handlers.awaitingConnection, handlers.channelOpen, options);
124
+ return channel;
125
+ }
126
+
127
+ /**
128
+ * Register event listener function
129
+ *
130
+ * Possible events:
131
+ *
132
+ * - "error"
133
+ * - "onChainTx"
134
+ * - "ownWithdrawLocked"
135
+ * - "withdrawLocked"
136
+ * - "ownDepositLocked"
137
+ * - "depositLocked"
138
+ *
139
+ * TODO: the event list looks outdated
140
+ *
141
+ * @param eventName - Event name
142
+ * @param callback - Callback function
143
+ */
144
+ // TODO define specific callback type depending on the event name
145
+ on(eventName, callback) {
146
+ this._eventEmitter.on(eventName, callback);
147
+ }
148
+
149
+ /**
150
+ * Remove event listener function
151
+ * @param eventName - Event name
152
+ * @param callback - Callback function
153
+ */
154
+ off(eventName, callback) {
155
+ this._eventEmitter.removeListener(eventName, callback);
156
+ }
157
+
158
+ /**
159
+ * Close the connection
160
+ */
161
+ disconnect() {
162
+ return channelDisconnect(this);
163
+ }
164
+
165
+ /**
166
+ * Get current status
167
+ */
168
+ status() {
169
+ return this._status;
170
+ }
171
+
172
+ /**
173
+ * Get current state
174
+ */
175
+ async state() {
176
+ return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));
177
+ }
178
+
179
+ /**
180
+ * Get current round
181
+ *
182
+ * If round cannot be determined (for example when channel has not been opened)
183
+ * it will return `null`.
184
+ */
185
+ round() {
186
+ if (this._state == null) {
187
+ return null;
188
+ }
189
+ const {
190
+ txType,
191
+ tx
192
+ } = unpackTx(this._state, Tag.SignedTx).tx.encodedTx;
193
+ switch (txType) {
194
+ case Tag.ChannelCreateTx:
195
+ return 1;
196
+ case Tag.ChannelOffChainTx:
197
+ case Tag.ChannelWithdrawTx:
198
+ case Tag.ChannelDepositTx:
199
+ return tx.round;
200
+ default:
201
+ return null;
202
+ }
203
+ }
204
+
205
+ /**
206
+ * Get channel id
207
+ *
208
+ */
209
+ id() {
210
+ if (this._channelId == null) throw new ChannelError('Channel is not initialized');
211
+ return this._channelId;
212
+ }
213
+
214
+ /**
215
+ * Get channel's fsm id
216
+ *
217
+ */
218
+ fsmId() {
219
+ if (this._fsmId == null) throw new ChannelError('Channel is not initialized');
220
+ return this._fsmId;
221
+ }
222
+ async enqueueAction(action) {
223
+ return enqueueAction(this, (channel, state) => (state === null || state === void 0 ? void 0 : state.handler) === handlers.channelOpen, action);
224
+ }
225
+
226
+ /**
227
+ * Leave channel
228
+ *
229
+ * It is possible to leave a channel and then later reestablish the channel
230
+ * off-chain state and continue operation. When a leave method is called,
231
+ * the channel fsm passes it on to the peer fsm, reports the current mutually
232
+ * signed state and then terminates.
233
+ *
234
+ * The channel can be reestablished by instantiating another Channel instance
235
+ * with two extra params: existingChannelId and offchainTx (returned from leave
236
+ * method as channelId and signedTx respectively).
237
+ *
238
+ * @example
239
+ * ```js
240
+ * channel.leave().then(({ channelId, signedTx }) => {
241
+ * console.log(channelId)
242
+ * console.log(signedTx)
243
+ * })
244
+ * ```
245
+ */
246
+ async leave() {
247
+ return this.enqueueAction(() => {
248
+ notify(this, 'channels.leave');
249
+ return {
250
+ handler: handlers.awaitingLeave
251
+ };
252
+ });
253
+ }
254
+
255
+ /**
256
+ * Trigger mutual close
257
+ *
258
+ * At any moment after the channel is opened, a closing procedure can be triggered.
259
+ * This can be done by either of the parties. The process is similar to the off-chain updates.
260
+ *
261
+ * @param sign - Function which verifies and signs mutual close transaction
262
+ * @example
263
+ * ```js
264
+ * channel.shutdown(
265
+ * async (tx) => await account.signTransaction(tx)
266
+ * ).then(tx => console.log('on_chain_tx', tx))
267
+ * ```
268
+ */
269
+ async shutdown(sign) {
270
+ return this.enqueueAction(() => {
271
+ notify(this, 'channels.shutdown');
272
+ return {
273
+ handler: handlers.awaitingShutdownTx,
274
+ state: {
275
+ sign
276
+ }
277
+ };
278
+ });
279
+ }
280
+ static async reconnect(options, txParams) {
281
+ const {
282
+ sign
283
+ } = options;
284
+ return Channel.initialize({
285
+ ...options,
286
+ reconnectTx: await sign('reconnect', buildTx(txParams, Tag.ChannelClientReconnectTx).tx)
287
+ });
288
+ }
289
+ }
290
+ //# sourceMappingURL=Base.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base.mjs","names":["snakeToPascal","buildTx","unpackTx","Tag","handlers","initialize","enqueueAction","notify","call","disconnect","channelDisconnect","ChannelError","snakeToPascalObjKeys","obj","Object","entries","reduce","result","key","val","Channel","EventEmitter","Map","options","_initialize","channel","existingFsmId","awaitingReconnection","awaitingConnection","channelOpen","on","eventName","callback","_eventEmitter","off","removeListener","status","_status","state","round","_state","txType","tx","SignedTx","encodedTx","ChannelCreateTx","ChannelOffChainTx","ChannelWithdrawTx","ChannelDepositTx","id","_channelId","fsmId","_fsmId","action","handler","leave","awaitingLeave","shutdown","sign","awaitingShutdownTx","reconnect","txParams","reconnectTx","ChannelClientReconnectTx"],"sources":["../../src/channel/Base.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 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 */\nimport { EventEmitter } from 'events';\nimport { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport { snakeToPascal } from '../utils/string';\nimport { buildTx, unpackTx } from '../tx/builder';\nimport { Tag } from '../tx/builder/constants';\nimport * as handlers from './handlers';\nimport {\n initialize,\n enqueueAction,\n notify,\n call,\n disconnect as channelDisconnect,\n SignTx,\n ChannelOptions,\n ChannelState,\n ChannelHandler,\n ChannelAction,\n ChannelStatus,\n ChannelFsm,\n} from './internal';\nimport { ChannelError } from '../utils/errors';\nimport { Encoded } from '../utils/encoder';\n\nfunction snakeToPascalObjKeys<Type>(obj: object): Type {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val,\n }), {}) as Type;\n}\n\ntype EventCallback = (...args: any[]) => void;\n\n/**\n * Channel\n * @example\n * ```js\n * await Channel.initialize({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n * ```\n */\nexport default class Channel {\n _eventEmitter = new EventEmitter();\n\n _pingTimeoutId: NodeJS.Timeout;\n\n _nextRpcMessageId = 0;\n\n _rpcCallbacks = new Map<number, (message: object) => void>();\n\n _fsmId?: Encoded.Bytearray;\n\n _messageQueue: object[] = [];\n\n _isMessageQueueLocked = false;\n\n _actionQueue: ChannelAction[] = [];\n\n _isActionQueueLocked = false;\n\n _status: ChannelStatus = 'disconnected';\n\n _fsm: ChannelFsm;\n\n _websocket: W3CWebSocket;\n\n _state?: Encoded.Transaction;\n\n _options: ChannelOptions;\n\n _channelId?: Encoded.Channel;\n\n /**\n * @param options - Channel params\n * @param options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param options.role - Participant role (\"initiator\" or \"responder\")\n * @param options.initiatorId - Initiator's public key\n * @param options.responderId - Responder's public key\n * @param options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param options.initiatorAmount - Amount of coins the initiator has committed to\n * the channel\n * @param options.responderAmount - Amount of coins the responder has committed to\n * the channel\n * @param options.channelReserve - The minimum amount both peers need to maintain\n * @param options.ttl - Minimum block height to include the channel_create_tx\n * @param options.host - Host of the responder's node\n * @param options.port - The port of the responders node\n * @param options.lockPeriod - Amount of blocks for disputing a solo close\n * @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)\n * @param options.minimumDepth - The minimum amount of blocks to be mined\n * @param options.fee - The fee to be used for the channel open transaction\n * @param options.gasPrice - Used for the fee computation of the channel open transaction\n * @param options.existingChannelId - Existing channel id (required if reestablishing a\n * channel)\n * @param options.offchainTx - Offchain transaction (required if reestablishing\n * a channel)\n * @param options.timeoutIdle - The time waiting for a new event to be initiated\n * (default: 600000)\n * @param options.timeoutFundingCreate - The time waiting for the initiator to produce\n * the create channel transaction after the noise session had been established (default: 120000)\n * @param options.timeoutFundingSign - The time frame the other client has to sign an\n * off-chain update after our client had initiated and signed it. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 120000)\n * @param options.timeoutFundingLock - The time frame the other client has to confirm an\n * on-chain transaction reaching maturity (passing minimum depth) after the local node has\n * detected this. This applies only for double signed on-chain intended updates: channel create\n * transaction, deposit, withdrawal and etc. (default: 360000)\n * @param options.timeoutSign - The time frame the client has to return a signed\n * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param options.timeoutAccept - The time frame the other client has to react to an\n * event. This applies for all off-chain updates that are not meant to land on-chain, as well as\n * some special cases: opening a noise connection, mutual closing acknowledgement and\n * reestablishing an existing channel (default: 120000)\n * @param options.timeoutInitialized - the time frame the responder has to accept an\n * incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param options.timeoutAwaitingOpen - The time frame the initiator has to start an\n * outgoing noise session to the responder's node. Applicable only for responder (default:\n * timeout_idle's value)\n * @param options.debug=false - Log websocket communication\n * @param options.sign - Function which verifies and signs transactions\n */\n static async initialize(options: ChannelOptions): Promise<Channel> {\n return Channel._initialize(new Channel(), options);\n }\n\n static async _initialize<T extends Channel>(channel: T, options: ChannelOptions): Promise<T> {\n await initialize(\n channel,\n options.existingFsmId != null ? handlers.awaitingReconnection : handlers.awaitingConnection,\n handlers.channelOpen,\n options,\n );\n return channel;\n }\n\n /**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * TODO: the event list looks outdated\n *\n * @param eventName - Event name\n * @param callback - Callback function\n */\n // TODO define specific callback type depending on the event name\n on(eventName: string, callback: EventCallback): void {\n this._eventEmitter.on(eventName, callback);\n }\n\n /**\n * Remove event listener function\n * @param eventName - Event name\n * @param callback - Callback function\n */\n off(eventName: string, callback: EventCallback): void {\n this._eventEmitter.removeListener(eventName, callback);\n }\n\n /**\n * Close the connection\n */\n disconnect(): void {\n return channelDisconnect(this);\n }\n\n /**\n * Get current status\n */\n status(): ChannelStatus {\n return this._status;\n }\n\n /**\n * Get current state\n */\n async state(): Promise<ChannelState> {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));\n }\n\n /**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n */\n round(): number | null {\n if (this._state == null) {\n return null;\n }\n const { txType, tx } = unpackTx(this._state, Tag.SignedTx).tx.encodedTx;\n switch (txType) {\n case Tag.ChannelCreateTx:\n return 1;\n case Tag.ChannelOffChainTx:\n case Tag.ChannelWithdrawTx:\n case Tag.ChannelDepositTx:\n return tx.round;\n default:\n return null;\n }\n }\n\n /**\n * Get channel id\n *\n */\n id(): Encoded.Channel {\n if (this._channelId == null) throw new ChannelError('Channel is not initialized');\n return this._channelId;\n }\n\n /**\n * Get channel's fsm id\n *\n */\n fsmId(): Encoded.Bytearray {\n if (this._fsmId == null) throw new ChannelError('Channel is not initialized');\n return this._fsmId;\n }\n\n protected async enqueueAction(\n action: () => { handler: ChannelHandler; state?: Partial<ChannelState> },\n ): Promise<any> {\n return enqueueAction(\n this,\n (channel, state) => state?.handler === handlers.channelOpen,\n action,\n );\n }\n\n /**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @example\n * ```js\n * channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n * ```\n */\n async leave(): Promise<{ channelId: Encoded.Bytearray; signedTx: Encoded.Transaction }> {\n return this.enqueueAction(() => {\n notify(this, 'channels.leave');\n return { handler: handlers.awaitingLeave };\n });\n }\n\n /**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param sign - Function which verifies and signs mutual close transaction\n * @example\n * ```js\n * channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n * ```\n */\n async shutdown(sign: SignTx): Promise<Encoded.Transaction> {\n return this.enqueueAction(() => {\n notify(this, 'channels.shutdown');\n return {\n handler: handlers.awaitingShutdownTx,\n state: { sign },\n };\n });\n }\n\n static async reconnect(options: ChannelOptions, txParams: any): Promise<Channel> {\n const { sign } = options;\n\n return Channel.initialize({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, Tag.ChannelClientReconnectTx).tx),\n });\n }\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAA6B,QAAQ;AAAC;EAAA;AAAA;AAAA,SAE7BA,aAAa;AAAA,SACbC,OAAO,EAAEC,QAAQ;AAAA,SACjBC,GAAG;AAAA,OACL,KAAKC,QAAQ;AAAA,SAElBC,UAAU,EACVC,aAAa,EACbC,MAAM,EACNC,IAAI,EACJC,UAAU,IAAIC,iBAAiB;AAAA,SASxBC,YAAY;AAGrB,SAASC,oBAAoB,CAAOC,GAAW,EAAQ;EACrD,OAAOC,MAAM,CAACC,OAAO,CAACF,GAAG,CAAC,CAACG,MAAM,CAAC,CAACC,MAAM;IAAA,IAAE,CAACC,GAAG,EAAEC,GAAG,CAAC;IAAA,OAAM;MACzD,GAAGF,MAAM;MACT,CAACjB,aAAa,CAACkB,GAAG,CAAC,GAAGC;IACxB,CAAC;EAAA,CAAC,EAAE,CAAC,CAAC,CAAC;AACT;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,OAAO,CAAC;EAAA;IAAA,uCACX,IAAIC,YAAY,EAAE;IAAA,2CAId,CAAC;IAAA,uCAEL,IAAIC,GAAG,EAAqC;IAAA,uCAIlC,EAAE;IAAA,+CAEJ,KAAK;IAAA,sCAEG,EAAE;IAAA,8CAEX,KAAK;IAAA,iCAEH,cAAc;EAAA;EAYvC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAajB,UAAU,CAACkB,OAAuB,EAAoB;IACjE,OAAOH,OAAO,CAACI,WAAW,CAAC,IAAIJ,OAAO,EAAE,EAAEG,OAAO,CAAC;EACpD;EAEA,aA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"}