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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +1 -1
  2. package/bin/aesophia_cli +0 -0
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1833 -1543
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.mjs.map +1 -1
  10. package/es/AeSdkAepp.d.ts +5 -4
  11. package/es/AeSdkAepp.mjs +13 -17
  12. package/es/AeSdkAepp.mjs.map +1 -1
  13. package/es/AeSdkBase.mjs.map +1 -1
  14. package/es/AeSdkMethods.d.ts +11 -12
  15. package/es/AeSdkMethods.mjs +6 -8
  16. package/es/AeSdkMethods.mjs.map +1 -1
  17. package/es/AeSdkWallet.mjs +1 -1
  18. package/es/AeSdkWallet.mjs.map +1 -1
  19. package/es/Node.d.ts +5 -1
  20. package/es/Node.mjs +11 -5
  21. package/es/Node.mjs.map +1 -1
  22. package/es/account/Base.d.ts +11 -6
  23. package/es/account/Base.mjs +0 -17
  24. package/es/account/Base.mjs.map +1 -1
  25. package/es/account/Generalized.mjs +12 -25
  26. package/es/account/Generalized.mjs.map +1 -1
  27. package/es/account/Ledger.mjs.map +1 -1
  28. package/es/account/LedgerFactory.mjs.map +1 -1
  29. package/es/account/Memory.d.ts +2 -1
  30. package/es/account/Memory.mjs +9 -21
  31. package/es/account/Memory.mjs.map +1 -1
  32. package/es/account/Rpc.mjs.map +1 -1
  33. package/es/aens.d.ts +12 -14
  34. package/es/aens.mjs +17 -31
  35. package/es/aens.mjs.map +1 -1
  36. package/es/aepp-wallet-communication/connection/Browser.mjs +0 -16
  37. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  38. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +0 -16
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  40. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  42. package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
  43. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  44. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -5
  45. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
  47. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  48. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
  50. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  51. package/es/apis/compiler/compiler.d.ts +1 -1
  52. package/es/apis/compiler/compiler.mjs +4 -20
  53. package/es/apis/compiler/compiler.mjs.map +1 -1
  54. package/es/apis/compiler/models/index.d.ts +3 -2
  55. package/es/apis/compiler/models/index.mjs.map +1 -1
  56. package/es/apis/compiler/models/mappers.d.ts +1 -1
  57. package/es/apis/compiler/models/mappers.mjs +19 -2
  58. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  59. package/es/apis/node/models/index.d.ts +15 -15
  60. package/es/apis/node/models/index.mjs.map +1 -1
  61. package/es/apis/node/models/mappers.d.ts +1 -1
  62. package/es/apis/node/models/mappers.mjs +2 -1
  63. package/es/apis/node/models/mappers.mjs.map +1 -1
  64. package/es/apis/node/models/parameters.d.ts +2 -2
  65. package/es/apis/node/models/parameters.mjs +2 -2
  66. package/es/apis/node/models/parameters.mjs.map +1 -1
  67. package/es/apis/node/node.mjs +3 -19
  68. package/es/apis/node/node.mjs.map +1 -1
  69. package/es/chain.d.ts +8 -8
  70. package/es/chain.mjs +20 -23
  71. package/es/chain.mjs.map +1 -1
  72. package/es/channel/Base.d.ts +25 -12
  73. package/es/channel/Base.mjs +23 -26
  74. package/es/channel/Base.mjs.map +1 -1
  75. package/es/channel/Contract.mjs +8 -21
  76. package/es/channel/Contract.mjs.map +1 -1
  77. package/es/channel/Spend.d.ts +4 -2
  78. package/es/channel/Spend.mjs +0 -16
  79. package/es/channel/Spend.mjs.map +1 -1
  80. package/es/channel/handlers.mjs +6 -18
  81. package/es/channel/handlers.mjs.map +1 -1
  82. package/es/channel/internal.d.ts +19 -2
  83. package/es/channel/internal.mjs +19 -19
  84. package/es/channel/internal.mjs.map +1 -1
  85. package/es/contract/Contract.d.ts +30 -85
  86. package/es/contract/Contract.mjs +197 -215
  87. package/es/contract/Contract.mjs.map +1 -1
  88. package/es/contract/compiler/Base.d.ts +10 -14
  89. package/es/contract/compiler/Base.mjs.map +1 -1
  90. package/es/contract/compiler/Cli.mjs +5 -11
  91. package/es/contract/compiler/Cli.mjs.map +1 -1
  92. package/es/contract/compiler/Http.mjs +6 -30
  93. package/es/contract/compiler/Http.mjs.map +1 -1
  94. package/es/contract/compiler/HttpNode.mjs.map +1 -1
  95. package/es/contract/compiler/getFileSystem.mjs.map +1 -1
  96. package/es/contract/delegation-signature.d.ts +43 -0
  97. package/es/contract/delegation-signature.mjs +45 -0
  98. package/es/contract/delegation-signature.mjs.map +1 -0
  99. package/es/contract/ga.d.ts +23 -7
  100. package/es/contract/ga.mjs +52 -27
  101. package/es/contract/ga.mjs.map +1 -1
  102. package/es/index-browser.d.ts +5 -4
  103. package/es/index-browser.mjs +7 -21
  104. package/es/index-browser.mjs.map +1 -1
  105. package/es/oracle.d.ts +12 -17
  106. package/es/oracle.mjs +28 -48
  107. package/es/oracle.mjs.map +1 -1
  108. package/es/spend.d.ts +19 -27
  109. package/es/spend.mjs +20 -43
  110. package/es/spend.mjs.map +1 -1
  111. package/es/tx/builder/SchemaTypes.d.ts +37 -0
  112. package/es/tx/builder/SchemaTypes.mjs +2 -0
  113. package/es/tx/builder/SchemaTypes.mjs.map +1 -0
  114. package/es/tx/builder/constants.d.ts +4 -2
  115. package/es/tx/builder/constants.mjs +2 -0
  116. package/es/tx/builder/constants.mjs.map +1 -1
  117. package/es/tx/builder/field-types/abi-version.d.ts +11 -2
  118. package/es/tx/builder/field-types/abi-version.mjs +24 -4
  119. package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
  120. package/es/tx/builder/field-types/address.mjs.map +1 -1
  121. package/es/tx/builder/field-types/array.d.ts +1 -1
  122. package/es/tx/builder/field-types/array.mjs.map +1 -1
  123. package/es/tx/builder/field-types/boolean.mjs.map +1 -1
  124. package/es/tx/builder/field-types/coin-amount.d.ts +3 -4
  125. package/es/tx/builder/field-types/coin-amount.mjs +4 -5
  126. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  127. package/es/tx/builder/field-types/ct-version.d.ts +22 -3
  128. package/es/tx/builder/field-types/ct-version.mjs +32 -4
  129. package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
  130. package/es/tx/builder/field-types/deposit.d.ts +2 -1
  131. package/es/tx/builder/field-types/deposit.mjs +3 -2
  132. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  133. package/es/tx/builder/field-types/encoded.d.ts +1 -1
  134. package/es/tx/builder/field-types/encoded.mjs.map +1 -1
  135. package/es/tx/builder/field-types/entry.mjs +3 -0
  136. package/es/tx/builder/field-types/entry.mjs.map +1 -1
  137. package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
  138. package/es/tx/builder/field-types/fee.d.ts +3 -1
  139. package/es/tx/builder/field-types/fee.mjs +5 -1
  140. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  141. package/es/tx/builder/field-types/field.mjs.map +1 -1
  142. package/es/tx/builder/field-types/gas-limit.d.ts +3 -2
  143. package/es/tx/builder/field-types/gas-limit.mjs +4 -2
  144. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  145. package/es/tx/builder/field-types/gas-price.d.ts +3 -1
  146. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  147. package/es/tx/builder/field-types/index.d.ts +52 -13
  148. package/es/tx/builder/field-types/index.mjs +10 -2
  149. package/es/tx/builder/field-types/index.mjs.map +1 -1
  150. package/es/tx/builder/field-types/map.d.ts +13 -0
  151. package/es/tx/builder/field-types/map.mjs +49 -0
  152. package/es/tx/builder/field-types/map.mjs.map +1 -0
  153. package/es/tx/builder/field-types/mptree.d.ts +7 -2
  154. package/es/tx/builder/field-types/mptree.mjs +5 -7
  155. package/es/tx/builder/field-types/mptree.mjs.map +1 -1
  156. package/es/tx/builder/field-types/name-fee.d.ts +1 -1
  157. package/es/tx/builder/field-types/name-fee.mjs +2 -2
  158. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  159. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  160. package/es/tx/builder/field-types/name.mjs.map +1 -1
  161. package/es/tx/builder/field-types/nonce.d.ts +14 -0
  162. package/es/tx/builder/field-types/nonce.mjs +29 -0
  163. package/es/tx/builder/field-types/nonce.mjs.map +1 -0
  164. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  165. package/es/tx/builder/field-types/raw.mjs.map +1 -1
  166. package/es/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  167. package/es/tx/builder/field-types/short-u-int-const.mjs +12 -8
  168. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -1
  169. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  170. package/es/tx/builder/field-types/string.mjs.map +1 -1
  171. package/es/tx/builder/field-types/ttl.d.ts +11 -0
  172. package/es/tx/builder/field-types/ttl.mjs +21 -0
  173. package/es/tx/builder/field-types/ttl.mjs.map +1 -0
  174. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  175. package/es/tx/builder/field-types/wrapped.d.ts +14 -0
  176. package/es/tx/builder/field-types/wrapped.mjs +22 -0
  177. package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
  178. package/es/tx/builder/helpers.mjs.map +1 -1
  179. package/es/tx/builder/index.d.ts +20 -20
  180. package/es/tx/builder/index.mjs +54 -64
  181. package/es/tx/builder/index.mjs.map +1 -1
  182. package/es/tx/builder/schema.d.ts +2735 -2865
  183. package/es/tx/builder/schema.generated.d.ts +2011 -0
  184. package/es/tx/builder/schema.generated.mjs +2 -0
  185. package/es/tx/builder/schema.generated.mjs.map +1 -0
  186. package/es/tx/builder/schema.mjs +459 -155
  187. package/es/tx/builder/schema.mjs.map +1 -1
  188. package/es/tx/execution-cost.d.ts +35 -0
  189. package/es/tx/execution-cost.mjs +123 -0
  190. package/es/tx/execution-cost.mjs.map +1 -0
  191. package/es/tx/transaction-signer.d.ts +6 -0
  192. package/es/tx/transaction-signer.mjs +27 -0
  193. package/es/tx/transaction-signer.mjs.map +1 -0
  194. package/es/tx/validator.mjs +60 -109
  195. package/es/tx/validator.mjs.map +1 -1
  196. package/es/utils/amount-formatter.mjs +0 -16
  197. package/es/utils/amount-formatter.mjs.map +1 -1
  198. package/es/utils/autorest.d.ts +3 -2
  199. package/es/utils/autorest.mjs +43 -11
  200. package/es/utils/autorest.mjs.map +1 -1
  201. package/es/utils/bytes.mjs +0 -16
  202. package/es/utils/bytes.mjs.map +1 -1
  203. package/es/utils/crypto.mjs +0 -16
  204. package/es/utils/crypto.mjs.map +1 -1
  205. package/es/utils/encoder.mjs.map +1 -1
  206. package/es/utils/errors.d.ts +14 -31
  207. package/es/utils/errors.mjs +3 -33
  208. package/es/utils/errors.mjs.map +1 -1
  209. package/es/utils/hd-wallet.mjs.map +1 -1
  210. package/es/utils/json-big.mjs.map +1 -1
  211. package/es/utils/keystore.mjs.map +1 -1
  212. package/es/utils/other.d.ts +1 -1
  213. package/es/utils/other.mjs.map +1 -1
  214. package/es/utils/semver-satisfies.mjs.map +1 -1
  215. package/es/utils/string.mjs +0 -17
  216. package/es/utils/string.mjs.map +1 -1
  217. package/package.json +34 -30
  218. package/src/AeSdkAepp.ts +16 -14
  219. package/src/AeSdkMethods.ts +11 -16
  220. package/src/AeSdkWallet.ts +1 -1
  221. package/src/Node.ts +17 -6
  222. package/src/account/Base.ts +11 -22
  223. package/src/account/Generalized.ts +9 -24
  224. package/src/account/Memory.ts +14 -21
  225. package/src/aens.ts +31 -47
  226. package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
  227. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +0 -17
  228. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
  229. package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
  230. package/src/aepp-wallet-communication/rpc/types.ts +7 -2
  231. package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
  232. package/src/apis/compiler/compiler.ts +3 -27
  233. package/src/apis/compiler/models/index.ts +3 -2
  234. package/src/apis/compiler/models/mappers.ts +15 -2
  235. package/src/apis/node/models/index.ts +16 -15
  236. package/src/apis/node/models/mappers.ts +2 -1
  237. package/src/apis/node/models/parameters.ts +2 -2
  238. package/src/apis/node/node.ts +3 -27
  239. package/src/chain.ts +29 -28
  240. package/src/channel/Base.ts +33 -33
  241. package/src/channel/Contract.ts +8 -23
  242. package/src/channel/Spend.ts +2 -17
  243. package/src/channel/handlers.ts +5 -18
  244. package/src/channel/internal.ts +40 -22
  245. package/src/contract/Contract.ts +161 -170
  246. package/src/contract/compiler/Base.ts +10 -14
  247. package/src/contract/compiler/Cli.ts +5 -11
  248. package/src/contract/compiler/Http.ts +6 -25
  249. package/src/contract/delegation-signature.ts +56 -0
  250. package/src/contract/ga.ts +53 -32
  251. package/src/index-browser.ts +15 -21
  252. package/src/oracle.ts +46 -56
  253. package/src/spend.ts +33 -67
  254. package/src/tx/builder/SchemaTypes.ts +79 -0
  255. package/src/tx/builder/constants.ts +2 -0
  256. package/src/tx/builder/field-types/abi-version.ts +29 -6
  257. package/src/tx/builder/field-types/array.ts +1 -1
  258. package/src/tx/builder/field-types/coin-amount.ts +6 -4
  259. package/src/tx/builder/field-types/ct-version.ts +37 -4
  260. package/src/tx/builder/field-types/deposit.ts +3 -1
  261. package/src/tx/builder/field-types/encoded.ts +1 -1
  262. package/src/tx/builder/field-types/entry.ts +8 -3
  263. package/src/tx/builder/field-types/fee.ts +6 -4
  264. package/src/tx/builder/field-types/gas-limit.ts +2 -2
  265. package/src/tx/builder/field-types/index.ts +15 -1
  266. package/src/tx/builder/field-types/map.ts +45 -0
  267. package/src/tx/builder/field-types/mptree.ts +4 -3
  268. package/src/tx/builder/field-types/name-fee.ts +2 -1
  269. package/src/tx/builder/field-types/nonce.ts +40 -0
  270. package/src/tx/builder/field-types/short-u-int-const.ts +18 -8
  271. package/src/tx/builder/field-types/ttl.ts +24 -0
  272. package/src/tx/builder/field-types/wrapped.ts +32 -0
  273. package/src/tx/builder/index.ts +57 -71
  274. package/src/tx/builder/schema.generated.ts +2013 -0
  275. package/src/tx/builder/schema.ts +544 -624
  276. package/src/tx/execution-cost.ts +146 -0
  277. package/src/tx/transaction-signer.ts +27 -0
  278. package/src/tx/validator.ts +60 -91
  279. package/src/utils/amount-formatter.ts +0 -16
  280. package/src/utils/autorest.ts +52 -11
  281. package/src/utils/bytes.ts +0 -16
  282. package/src/utils/crypto.ts +0 -16
  283. package/src/utils/errors.ts +16 -45
  284. package/src/utils/string.ts +0 -17
  285. package/types-legacy/ts4.2/AeSdkAepp.d.ts +5 -4
  286. package/types-legacy/ts4.2/AeSdkMethods.d.ts +11 -12
  287. package/types-legacy/ts4.2/Node.d.ts +5 -1
  288. package/types-legacy/ts4.2/account/Base.d.ts +11 -6
  289. package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
  290. package/types-legacy/ts4.2/aens.d.ts +12 -14
  291. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
  292. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
  293. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
  294. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
  295. package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
  296. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
  297. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  298. package/types-legacy/ts4.2/chain.d.ts +8 -8
  299. package/types-legacy/ts4.2/channel/Base.d.ts +25 -12
  300. package/types-legacy/ts4.2/channel/Spend.d.ts +4 -2
  301. package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
  302. package/types-legacy/ts4.2/contract/Contract.d.ts +29 -84
  303. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +10 -14
  304. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
  305. package/types-legacy/ts4.2/contract/ga.d.ts +23 -7
  306. package/types-legacy/ts4.2/index-browser.d.ts +5 -4
  307. package/types-legacy/ts4.2/oracle.d.ts +12 -17
  308. package/types-legacy/ts4.2/spend.d.ts +19 -27
  309. package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
  310. package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -2
  311. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +11 -2
  312. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +1 -1
  313. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +3 -4
  314. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +33 -3
  315. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +2 -1
  316. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +1 -1
  317. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +3 -1
  318. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +3 -2
  319. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
  320. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +52 -13
  321. package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
  322. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +7 -2
  323. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
  324. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
  325. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  326. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
  327. package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
  328. package/types-legacy/ts4.2/tx/builder/index.d.ts +23 -20
  329. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2962 -4629
  330. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
  331. package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
  332. package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
  333. package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
  334. package/types-legacy/ts4.2/utils/errors.d.ts +14 -31
  335. package/types-legacy/ts4.2/utils/other.d.ts +1 -1
  336. package/types-legacy/ts4.5/AeSdkAepp.d.ts +5 -4
  337. package/types-legacy/ts4.5/AeSdkMethods.d.ts +11 -12
  338. package/types-legacy/ts4.5/Node.d.ts +5 -1
  339. package/types-legacy/ts4.5/account/Base.d.ts +11 -6
  340. package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
  341. package/types-legacy/ts4.5/aens.d.ts +12 -14
  342. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
  343. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
  344. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
  345. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
  346. package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
  347. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
  348. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  349. package/types-legacy/ts4.5/chain.d.ts +8 -8
  350. package/types-legacy/ts4.5/channel/Base.d.ts +25 -12
  351. package/types-legacy/ts4.5/channel/Spend.d.ts +4 -2
  352. package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
  353. package/types-legacy/ts4.5/contract/Contract.d.ts +29 -84
  354. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +10 -14
  355. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
  356. package/types-legacy/ts4.5/contract/ga.d.ts +23 -7
  357. package/types-legacy/ts4.5/index-browser.d.ts +5 -4
  358. package/types-legacy/ts4.5/oracle.d.ts +12 -17
  359. package/types-legacy/ts4.5/spend.d.ts +19 -27
  360. package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
  361. package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -2
  362. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +11 -2
  363. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +1 -1
  364. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +3 -4
  365. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +33 -3
  366. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +2 -1
  367. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +1 -1
  368. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +3 -1
  369. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +3 -2
  370. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
  371. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +52 -13
  372. package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
  373. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +7 -2
  374. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
  375. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
  376. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  377. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
  378. package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
  379. package/types-legacy/ts4.5/tx/builder/index.d.ts +23 -20
  380. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2962 -4629
  381. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
  382. package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
  383. package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
  384. package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
  385. package/types-legacy/ts4.5/utils/errors.d.ts +14 -31
  386. package/types-legacy/ts4.5/utils/other.d.ts +1 -1
  387. package/es/tx/index.d.ts +0 -19
  388. package/es/tx/index.mjs +0 -115
  389. package/es/tx/index.mjs.map +0 -1
  390. package/src/apis/compiler/code-model-v4.yaml +0 -2442
  391. package/src/apis/node/code-model-v4.yaml +0 -10080
  392. package/src/tx/index.ts +0 -129
  393. package/types-legacy/ts4.2/tx/index.d.ts +0 -19
  394. package/types-legacy/ts4.5/tx/index.d.ts +0 -19
package/src/chain.ts CHANGED
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2022 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import { AE_AMOUNT_FORMATS, formatAmount } from './utils/amount-formatter';
18
2
  import verifyTransaction, { ValidatorResult } from './tx/validator';
19
3
  import { isAccountNotFoundError, pause } from './utils/other';
@@ -29,8 +13,11 @@ import {
29
13
  Account as AccountNode, ByteCode, ContractObject, DryRunResult, DryRunResults,
30
14
  Generation, KeyBlock, MicroBlockHeader, NameEntry, SignedTx,
31
15
  } from './apis/node';
32
- import { decode, Encoded, Encoding } from './utils/encoder';
16
+ import {
17
+ decode, encode, Encoded, Encoding,
18
+ } from './utils/encoder';
33
19
  import AccountBase from './account/Base';
20
+ import { buildTxHash } from './tx/builder';
34
21
 
35
22
  /**
36
23
  * @category chain
@@ -89,7 +76,7 @@ export async function getHeight({ onNode }: { onNode: Node }): Promise<number> {
89
76
  export async function poll(
90
77
  th: Encoded.TxHash,
91
78
  {
92
- blocks = 10, interval, onNode, ...options
79
+ blocks = 5, interval, onNode, ...options
93
80
  }:
94
81
  { blocks?: number; interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],
95
82
  ): Promise<TransformNodeType<SignedTx>> {
@@ -154,24 +141,33 @@ export async function waitForTxConfirm(
154
141
  }
155
142
 
156
143
  /**
157
- * Submit a signed transaction for mining
144
+ * Signs and submits transaction for mining
158
145
  * @category chain
159
- * @param tx - Transaction to submit
146
+ * @param txUnsigned - Transaction to sign and submit
160
147
  * @param options - Options
161
148
  * @param options.onNode - Node to use
162
149
  * @param options.onAccount - Account to use
163
- * @param options.verify - Verify transaction before sending
150
+ * @param options.verify - Verify transaction before broadcast, throw error if not
164
151
  * @param options.waitMined - Ensure that transaction get into block
165
152
  * @param options.confirm - Number of micro blocks that should be mined after tx get included
166
153
  * @returns Transaction details
167
154
  */
168
155
  export async function sendTransaction(
169
- tx: Encoded.Transaction,
156
+ txUnsigned: Encoded.Transaction,
170
157
  {
171
- onNode, onAccount, verify = true, waitMined = true, confirm, ...options
158
+ onNode, onAccount, verify = true, waitMined = true, confirm, innerTx, ...options
172
159
  }:
173
160
  SendTransactionOptions,
174
161
  ): Promise<SendTransactionReturnType> {
162
+ const tx = await onAccount.signTransaction(txUnsigned, {
163
+ ...options,
164
+ onNode,
165
+ innerTx,
166
+ networkId: await onNode.getNetworkId(),
167
+ });
168
+
169
+ if (innerTx === true) return { hash: buildTxHash(tx), rawTx: tx };
170
+
175
171
  if (verify) {
176
172
  const validation = await verifyTransaction(tx, onNode);
177
173
  if (validation.length > 0) {
@@ -221,12 +217,13 @@ export async function sendTransaction(
221
217
 
222
218
  type SendTransactionOptionsType = {
223
219
  onNode: Node;
224
- onAccount?: AccountBase;
220
+ onAccount: AccountBase;
225
221
  verify?: boolean;
226
222
  waitMined?: boolean;
227
223
  confirm?: boolean | number;
228
- } & Parameters<typeof poll>[1] & Omit<Parameters<typeof waitForTxConfirm>[1], 'confirm'>;
229
- interface SendTransactionOptions extends SendTransactionOptionsType {}
224
+ } & Parameters<typeof poll>[1] & Omit<Parameters<typeof waitForTxConfirm>[1], 'confirm'>
225
+ & Parameters<AccountBase['signTransaction']>[1];
226
+ export interface SendTransactionOptions extends SendTransactionOptionsType {}
230
227
  interface SendTransactionReturnType extends Partial<TransformNodeType<SignedTx>> {
231
228
  hash: Encoded.TxHash;
232
229
  rawTx: Encoded.Transaction;
@@ -263,11 +260,15 @@ export async function getAccount(
263
260
  * @param options.hash - The block hash on which to obtain the balance for (default: top of chain)
264
261
  */
265
262
  export async function getBalance(
266
- address: Encoded.AccountAddress | Encoded.ContractAddress,
263
+ address: Encoded.AccountAddress | Encoded.ContractAddress | Encoded.OracleAddress,
267
264
  { format = AE_AMOUNT_FORMATS.AETTOS, ...options }:
268
265
  { format?: AE_AMOUNT_FORMATS } & Parameters<typeof getAccount>[1],
269
266
  ): Promise<string> {
270
- const { balance } = await getAccount(address, options).catch((error) => {
267
+ const addr = address.startsWith('ok_')
268
+ ? encode(decode(address), Encoding.AccountAddress)
269
+ : address as Encoded.AccountAddress | Encoded.ContractAddress;
270
+
271
+ const { balance } = await getAccount(addr, options).catch((error) => {
271
272
  if (!isAccountNotFoundError(error)) throw error;
272
273
  return { balance: 0n };
273
274
  });
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2022 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import { EventEmitter } from 'events';
18
2
  import { w3cwebsocket as W3CWebSocket } from 'websocket';
19
3
  import { snakeToPascal } from '../utils/string';
@@ -33,9 +17,12 @@ import {
33
17
  ChannelAction,
34
18
  ChannelStatus,
35
19
  ChannelFsm,
20
+ ChannelMessage,
21
+ ChannelEvents,
36
22
  } from './internal';
37
23
  import { ChannelError } from '../utils/errors';
38
24
  import { Encoded } from '../utils/encoder';
25
+ import { TxUnpacked } from '../tx/builder/schema.generated';
39
26
 
40
27
  function snakeToPascalObjKeys<Type>(obj: object): Type {
41
28
  return Object.entries(obj).reduce((result, [key, val]) => ({
@@ -44,8 +31,6 @@ function snakeToPascalObjKeys<Type>(obj: object): Type {
44
31
  }), {}) as Type;
45
32
  }
46
33
 
47
- type EventCallback = (...args: any[]) => void;
48
-
49
34
  /**
50
35
  * Channel
51
36
  * @example
@@ -78,7 +63,7 @@ export default class Channel {
78
63
 
79
64
  _fsmId?: Encoded.Bytearray;
80
65
 
81
- _messageQueue: object[] = [];
66
+ _messageQueue: ChannelMessage[] = [];
82
67
 
83
68
  _isMessageQueueLocked = false;
84
69
 
@@ -92,7 +77,7 @@ export default class Channel {
92
77
 
93
78
  _websocket: W3CWebSocket;
94
79
 
95
- _state?: Encoded.Transaction;
80
+ _state: Encoded.Transaction | '' = '';
96
81
 
97
82
  _options: ChannelOptions;
98
83
 
@@ -168,19 +153,23 @@ export default class Channel {
168
153
  * Possible events:
169
154
  *
170
155
  * - "error"
156
+ * - "stateChanged"
157
+ * - "statusChanged"
158
+ * - "message"
159
+ * - "peerDisconnected"
171
160
  * - "onChainTx"
172
161
  * - "ownWithdrawLocked"
173
162
  * - "withdrawLocked"
174
163
  * - "ownDepositLocked"
175
164
  * - "depositLocked"
165
+ * - "channelReestablished"
166
+ * - "newContract"
176
167
  *
177
- * TODO: the event list looks outdated
178
168
  *
179
169
  * @param eventName - Event name
180
170
  * @param callback - Callback function
181
171
  */
182
- // TODO define specific callback type depending on the event name
183
- on(eventName: string, callback: EventCallback): void {
172
+ on<E extends keyof ChannelEvents>(eventName: E, callback: ChannelEvents[E]): void {
184
173
  this._eventEmitter.on(eventName, callback);
185
174
  }
186
175
 
@@ -189,7 +178,7 @@ export default class Channel {
189
178
  * @param eventName - Event name
190
179
  * @param callback - Callback function
191
180
  */
192
- off(eventName: string, callback: EventCallback): void {
181
+ off<E extends keyof ChannelEvents>(eventName: E, callback: ChannelEvents[E]): void {
193
182
  this._eventEmitter.removeListener(eventName, callback);
194
183
  }
195
184
 
@@ -211,12 +200,23 @@ export default class Channel {
211
200
  * Get current state
212
201
  */
213
202
  async state(): Promise<{
214
- calls: Encoded.CallStateTree;
215
- halfSignedTx: Encoded.Transaction | '';
216
- signedTx: Encoded.Transaction;
217
- trees: Encoded.StateTrees;
203
+ calls: TxUnpacked & { tag: Tag.CallsMtree };
204
+ halfSignedTx?: TxUnpacked & { tag: Tag.SignedTx };
205
+ signedTx?: TxUnpacked & { tag: Tag.SignedTx };
206
+ trees: TxUnpacked & { tag: Tag.StateTrees };
218
207
  }> {
219
- return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));
208
+ const res = snakeToPascalObjKeys<{
209
+ calls: Encoded.CallStateTree;
210
+ halfSignedTx: Encoded.Transaction | '';
211
+ signedTx: Encoded.Transaction | '';
212
+ trees: Encoded.StateTrees;
213
+ }>(await call(this, 'channels.get.offchain_state', {}));
214
+ return {
215
+ calls: unpackTx(res.calls, Tag.CallsMtree),
216
+ ...res.halfSignedTx !== '' && { halfSignedTx: unpackTx(res.halfSignedTx, Tag.SignedTx) },
217
+ ...res.signedTx !== '' && { signedTx: unpackTx(res.signedTx, Tag.SignedTx) },
218
+ trees: unpackTx(res.trees, Tag.StateTrees),
219
+ };
220
220
  }
221
221
 
222
222
  /**
@@ -226,17 +226,17 @@ export default class Channel {
226
226
  * it will return `null`.
227
227
  */
228
228
  round(): number | null {
229
- if (this._state == null) {
229
+ if (this._state === '') {
230
230
  return null;
231
231
  }
232
- const { tag, round } = unpackTx(this._state, Tag.SignedTx).encodedTx;
233
- switch (tag) {
232
+ const params = unpackTx(this._state, Tag.SignedTx).encodedTx;
233
+ switch (params.tag) {
234
234
  case Tag.ChannelCreateTx:
235
235
  return 1;
236
236
  case Tag.ChannelOffChainTx:
237
237
  case Tag.ChannelWithdrawTx:
238
238
  case Tag.ChannelDepositTx:
239
- return round;
239
+ return params.round;
240
240
  default:
241
241
  return null;
242
242
  }
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2022 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import BigNumber from 'bignumber.js';
18
2
  import { snakeToPascal } from '../utils/string';
19
3
  import {
@@ -34,7 +18,7 @@ import { ContractCallReturnType } from '../apis/node';
34
18
  import { ContractCallObject } from '../contract/Contract';
35
19
  import Channel from './Base';
36
20
  import ChannelSpend from './Spend';
37
- import { UnexpectedChannelMessageError } from '../utils/errors';
21
+ import { ChannelError, UnexpectedChannelMessageError } from '../utils/errors';
38
22
  import { unpackTx } from '../tx/builder';
39
23
  import { encodeContractAddress } from '../utils/crypto';
40
24
 
@@ -152,16 +136,17 @@ export default class ChannelContract extends ChannelSpend {
152
136
  state2: ChannelState,
153
137
  ): ChannelFsm => (
154
138
  awaitingCompletion(this, message2, state2, () => {
155
- const { round } = unpackTx(message2.params.data.state, Tag.SignedTx).encodedTx;
139
+ const params = unpackTx(message2.params.data.state, Tag.SignedTx).encodedTx;
140
+ if (params.tag !== Tag.ChannelOffChainTx) {
141
+ throw new ChannelError(`Tag should be ${Tag[Tag.ChannelOffChainTx]}, got ${Tag[params.tag]} instead`);
142
+ }
156
143
  const addressKey = this._options.role === 'initiator'
157
144
  ? 'initiatorId' : 'responderId';
158
145
  const owner = this._options[addressKey];
159
146
  changeState(this, message2.params.data.state);
160
- state2.resolve({
161
- accepted: true,
162
- address: encodeContractAddress(owner, round),
163
- signedTx: message2.params.data.state,
164
- });
147
+ const address = encodeContractAddress(owner, params.round);
148
+ emit(this, 'newContract', address);
149
+ state2.resolve({ accepted: true, address, signedTx: message2.params.data.state });
165
150
  return { handler: channelOpen };
166
151
  })
167
152
  ),
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2022 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import BigNumber from 'bignumber.js';
18
2
  import {
19
3
  notify, call, SignTx, ChannelState, ChannelMessage, ChannelFsm, changeState,
@@ -27,6 +11,7 @@ import {
27
11
  } from './handlers';
28
12
  import { unpackTx } from '../tx/builder';
29
13
  import { Tag } from '../tx/builder/constants';
14
+ import { TxUnpacked } from '../tx/builder/schema.generated';
30
15
 
31
16
  export default class ChannelSpend extends Channel {
32
17
  /**
@@ -135,7 +120,7 @@ export default class ChannelSpend extends Channel {
135
120
  accounts: Encoded.AccountAddress[];
136
121
  contracts?: Encoded.ContractAddress[];
137
122
  },
138
- ): Promise<ReturnType<typeof unpackTx<Tag.TreesPoi>>> {
123
+ ): Promise<TxUnpacked & { tag: Tag.TreesPoi }> {
139
124
  return unpackTx(
140
125
  (await call(this, 'channels.get.poi', { accounts, contracts })).poi,
141
126
  Tag.TreesPoi,
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  /* eslint-disable consistent-return */
18
2
  /* eslint-disable default-case */
19
3
  /* eslint-disable @typescript-eslint/no-use-before-define */
@@ -28,6 +12,7 @@ import {
28
12
  ChannelFsm,
29
13
  SignTx,
30
14
  ChannelStatus,
15
+ ChannelEvents,
31
16
  } from './internal';
32
17
  import { unpackTx, buildTx } from '../tx/builder';
33
18
  import { decode, Encoded } from '../utils/encoder';
@@ -40,6 +25,7 @@ import {
40
25
  } from '../utils/errors';
41
26
  import type Channel from './Base';
42
27
  import { Tag } from '../tx/builder/constants';
28
+ import { snakeToPascal } from '../utils/string';
43
29
 
44
30
  export async function appendSignature(
45
31
  tx: Encoded.Transaction,
@@ -165,7 +151,8 @@ export async function awaitingReconnection(
165
151
  if (message.method === 'channels.info') {
166
152
  if (message.params.data.event === 'fsm_up') {
167
153
  channel._fsmId = message.params.data.fsm_id;
168
- changeState(channel, (await channel.state()).signedTx);
154
+ const { signedTx } = await channel.state();
155
+ changeState(channel, signedTx == null ? '' : buildTx(signedTx));
169
156
  return { handler: channelOpen };
170
157
  }
171
158
  }
@@ -270,7 +257,7 @@ export async function channelOpen(
270
257
  //
271
258
  // We should enter intermediate state where offchain transactions
272
259
  // are blocked until channel is reestablished.
273
- emit(channel, message.params.data.event);
260
+ emit(channel, snakeToPascal(message.params.data.event) as keyof ChannelEvents);
274
261
  return { handler: channelOpen };
275
262
  case 'fsm_up':
276
263
  channel._fsmId = message.params.data.fsm_id;
@@ -1,20 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
1
  import { w3cwebsocket as W3CWebSocket } from 'websocket';
19
2
  import BigNumber from 'bignumber.js';
20
3
  import type Channel from './Base';
@@ -30,6 +13,23 @@ import {
30
13
  ChannelIncomingMessageError,
31
14
  ChannelError,
32
15
  } from '../utils/errors';
16
+ import { encodeContractAddress } from '../utils/crypto';
17
+ import { buildTx } from '../tx/builder';
18
+
19
+ export interface ChannelEvents {
20
+ statusChanged: (status: ChannelStatus) => void;
21
+ stateChanged: (tx: Encoded.Transaction | '') => void;
22
+ depositLocked: () => void;
23
+ ownDepositLocked: () => void;
24
+ withdrawLocked: () => void;
25
+ ownWithdrawLocked: () => void;
26
+ peerDisconnected: () => void;
27
+ channelReestablished: () => void;
28
+ error: (error: Error) => void;
29
+ onChainTx: (tx: Encoded.Transaction, details: { info: string; type: string }) => void;
30
+ message: (message: string | Object) => void;
31
+ newContract: (contractAddress: Encoded.ContractAddress) => void;
32
+ }
33
33
 
34
34
  export interface ChannelAction {
35
35
  guard: (channel: Channel, state?: ChannelFsm) => boolean;
@@ -139,7 +139,10 @@ const PING_TIMEOUT_MS = 10000;
139
139
  // Close connection if pong message is not received within 15 seconds
140
140
  const PONG_TIMEOUT_MS = 15000;
141
141
 
142
- export function emit(channel: Channel, ...args: any[]): void {
142
+ export function emit<E extends keyof ChannelEvents>(
143
+ channel: Channel,
144
+ ...args: [E, ...Parameters<ChannelEvents[E]>]
145
+ ): void {
143
146
  const [eventName, ...rest] = args;
144
147
  channel._eventEmitter.emit(eventName, ...rest);
145
148
  }
@@ -166,7 +169,7 @@ export function changeStatus(channel: Channel, newStatus: ChannelStatus): void {
166
169
  emit(channel, 'statusChanged', newStatus);
167
170
  }
168
171
 
169
- export function changeState(channel: Channel, newState: Encoded.Transaction): void {
172
+ export function changeState(channel: Channel, newState: Encoded.Transaction | ''): void {
170
173
  channel._state = newState;
171
174
  emit(channel, 'stateChanged', newState);
172
175
  }
@@ -211,9 +214,21 @@ export async function enqueueAction(
211
214
  return promise;
212
215
  }
213
216
 
214
- async function handleMessage(channel: Channel, message: object): Promise<void> {
217
+ async function handleMessage(channel: Channel, message: ChannelMessage): Promise<void> {
215
218
  const { handler, state: st } = channel._fsm;
216
- enterState(channel, await Promise.resolve(handler(channel, message, st)));
219
+ const nextState = await Promise.resolve(handler(channel, message, st));
220
+ enterState(channel, nextState);
221
+ // TODO: emit message and handler name (?) to move this code to Contract constructor
222
+ if (
223
+ message?.params?.data?.updates?.[0]?.op === 'OffChainNewContract'
224
+ // if name is channelOpen, the contract was created by other participant
225
+ && nextState?.handler.name === 'channelOpen'
226
+ ) {
227
+ const round = channel.round();
228
+ if (round == null) throw new UnexpectedTsError('Round is null');
229
+ const owner = message?.params?.data?.updates?.[0]?.owner;
230
+ emit(channel, 'newContract', encodeContractAddress(owner, round + 1));
231
+ }
217
232
  }
218
233
 
219
234
  async function dequeueMessage(channel: Channel): Promise<void> {
@@ -318,7 +333,10 @@ export async function initialize(
318
333
  if (channelOptions.reconnectTx != null) {
319
334
  enterState(channel, { handler: openHandler });
320
335
  const { signedTx } = await channel.state();
321
- changeState(channel, signedTx);
336
+ if (signedTx == null) {
337
+ throw new ChannelError('`signedTx` missed in state while reconnection');
338
+ }
339
+ changeState(channel, buildTx(signedTx));
322
340
  }
323
341
  ping(channel);
324
342
  },