@aeternity/aepp-sdk 13.0.0-alpha.0 → 13.0.0-beta.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 (481) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +5595 -2249
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.mjs.map +1 -1
  9. package/es/AeSdkAepp.mjs.map +1 -1
  10. package/es/AeSdkBase.d.ts +3 -3
  11. package/es/AeSdkBase.mjs +4 -0
  12. package/es/AeSdkBase.mjs.map +1 -1
  13. package/es/AeSdkMethods.d.ts +12 -14
  14. package/es/AeSdkMethods.mjs +6 -8
  15. package/es/AeSdkMethods.mjs.map +1 -1
  16. package/es/AeSdkWallet.mjs +1 -1
  17. package/es/AeSdkWallet.mjs.map +1 -1
  18. package/es/Node.d.ts +9 -4
  19. package/es/Node.mjs +12 -6
  20. package/es/Node.mjs.map +1 -1
  21. package/es/account/Base.d.ts +13 -8
  22. package/es/account/Base.mjs +0 -17
  23. package/es/account/Base.mjs.map +1 -1
  24. package/es/account/Generalized.mjs +14 -25
  25. package/es/account/Generalized.mjs.map +1 -1
  26. package/es/account/Ledger.mjs +2 -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 +11 -22
  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 +22 -32
  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.d.ts +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +19 -20
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  43. package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
  44. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  45. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -6
  46. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
  48. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
  51. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  52. package/es/apis/compiler/compiler.d.ts +1 -1
  53. package/es/apis/compiler/compiler.mjs +4 -20
  54. package/es/apis/compiler/compiler.mjs.map +1 -1
  55. package/es/apis/compiler/models/index.d.ts +3 -2
  56. package/es/apis/compiler/models/index.mjs.map +1 -1
  57. package/es/apis/compiler/models/mappers.d.ts +1 -1
  58. package/es/apis/compiler/models/mappers.mjs +19 -2
  59. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  60. package/es/apis/node/models/index.d.ts +15 -15
  61. package/es/apis/node/models/index.mjs.map +1 -1
  62. package/es/apis/node/models/mappers.d.ts +1 -1
  63. package/es/apis/node/models/mappers.mjs +2 -1
  64. package/es/apis/node/models/mappers.mjs.map +1 -1
  65. package/es/apis/node/models/parameters.d.ts +2 -2
  66. package/es/apis/node/models/parameters.mjs +2 -2
  67. package/es/apis/node/models/parameters.mjs.map +1 -1
  68. package/es/apis/node/node.mjs +3 -19
  69. package/es/apis/node/node.mjs.map +1 -1
  70. package/es/chain.d.ts +17 -9
  71. package/es/chain.mjs +23 -23
  72. package/es/chain.mjs.map +1 -1
  73. package/es/channel/Base.d.ts +27 -9
  74. package/es/channel/Base.mjs +27 -27
  75. package/es/channel/Base.mjs.map +1 -1
  76. package/es/channel/Contract.d.ts +8 -7
  77. package/es/channel/Contract.mjs +8 -21
  78. package/es/channel/Contract.mjs.map +1 -1
  79. package/es/channel/Spend.d.ts +5 -1
  80. package/es/channel/Spend.mjs +4 -18
  81. package/es/channel/Spend.mjs.map +1 -1
  82. package/es/channel/handlers.mjs +16 -26
  83. package/es/channel/handlers.mjs.map +1 -1
  84. package/es/channel/internal.d.ts +19 -2
  85. package/es/channel/internal.mjs +22 -20
  86. package/es/channel/internal.mjs.map +1 -1
  87. package/es/contract/Contract.d.ts +43 -123
  88. package/es/contract/Contract.mjs +230 -250
  89. package/es/contract/Contract.mjs.map +1 -1
  90. package/es/contract/compiler/Base.d.ts +74 -0
  91. package/es/contract/compiler/Base.mjs +5 -0
  92. package/es/contract/compiler/Base.mjs.map +1 -0
  93. package/es/contract/compiler/Cli.d.ts +23 -0
  94. package/es/contract/compiler/Cli.mjs +149 -0
  95. package/es/contract/compiler/Cli.mjs.map +1 -0
  96. package/es/contract/compiler/Http.d.ts +32 -0
  97. package/es/contract/compiler/Http.mjs +94 -0
  98. package/es/contract/compiler/Http.mjs.map +1 -0
  99. package/es/contract/compiler/HttpNode.d.ts +17 -0
  100. package/es/contract/compiler/HttpNode.mjs +26 -0
  101. package/es/contract/compiler/HttpNode.mjs.map +1 -0
  102. package/es/contract/compiler/getFileSystem.d.ts +6 -0
  103. package/es/contract/compiler/getFileSystem.mjs +40 -0
  104. package/es/contract/compiler/getFileSystem.mjs.map +1 -0
  105. package/es/contract/delegation-signature.d.ts +43 -0
  106. package/es/contract/delegation-signature.mjs +45 -0
  107. package/es/contract/delegation-signature.mjs.map +1 -0
  108. package/es/contract/ga.d.ts +27 -10
  109. package/es/contract/ga.mjs +63 -29
  110. package/es/contract/ga.mjs.map +1 -1
  111. package/es/index-browser.d.ts +40 -0
  112. package/es/index-browser.mjs +41 -0
  113. package/es/index-browser.mjs.map +1 -0
  114. package/es/index.d.ts +4 -38
  115. package/es/index.mjs +4 -53
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +12 -17
  118. package/es/oracle.mjs +29 -49
  119. package/es/oracle.mjs.map +1 -1
  120. package/es/spend.d.ts +19 -27
  121. package/es/spend.mjs +21 -46
  122. package/es/spend.mjs.map +1 -1
  123. package/es/tx/builder/SchemaTypes.d.ts +37 -0
  124. package/es/tx/builder/SchemaTypes.mjs +2 -0
  125. package/es/tx/builder/SchemaTypes.mjs.map +1 -0
  126. package/es/tx/builder/constants.d.ts +31 -2
  127. package/es/tx/builder/constants.mjs +34 -3
  128. package/es/tx/builder/constants.mjs.map +1 -1
  129. package/es/tx/builder/field-types/abi-version.d.ts +19 -0
  130. package/es/tx/builder/field-types/abi-version.mjs +40 -0
  131. package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
  132. package/es/tx/builder/field-types/address.d.ts +5 -6
  133. package/es/tx/builder/field-types/address.mjs +17 -8
  134. package/es/tx/builder/field-types/address.mjs.map +1 -1
  135. package/es/tx/builder/field-types/array.d.ts +7 -0
  136. package/es/tx/builder/field-types/array.mjs +11 -0
  137. package/es/tx/builder/field-types/array.mjs.map +1 -0
  138. package/es/tx/builder/field-types/boolean.d.ts +6 -0
  139. package/es/tx/builder/field-types/boolean.mjs +13 -0
  140. package/es/tx/builder/field-types/boolean.mjs.map +1 -0
  141. package/es/tx/builder/field-types/coin-amount.d.ts +4 -5
  142. package/es/tx/builder/field-types/coin-amount.mjs +4 -5
  143. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  144. package/es/tx/builder/field-types/ct-version.d.ts +49 -0
  145. package/es/tx/builder/field-types/ct-version.mjs +76 -0
  146. package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
  147. package/es/tx/builder/field-types/deposit.d.ts +3 -2
  148. package/es/tx/builder/field-types/deposit.mjs +3 -2
  149. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  150. package/es/tx/builder/field-types/encoded.d.ts +6 -0
  151. package/es/tx/builder/field-types/encoded.mjs +21 -0
  152. package/es/tx/builder/field-types/encoded.mjs.map +1 -0
  153. package/es/tx/builder/field-types/entry.d.ts +11 -0
  154. package/es/tx/builder/field-types/entry.mjs +34 -0
  155. package/es/tx/builder/field-types/entry.mjs.map +1 -0
  156. package/es/tx/builder/field-types/enumeration.d.ts +5 -3
  157. package/es/tx/builder/field-types/enumeration.mjs +11 -2
  158. package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
  159. package/es/tx/builder/field-types/fee.d.ts +12 -7
  160. package/es/tx/builder/field-types/fee.mjs +28 -20
  161. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  162. package/es/tx/builder/field-types/field.mjs.map +1 -1
  163. package/es/tx/builder/field-types/gas-limit.d.ts +7 -3
  164. package/es/tx/builder/field-types/gas-limit.mjs +13 -8
  165. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  166. package/es/tx/builder/field-types/gas-price.d.ts +3 -1
  167. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  168. package/es/tx/builder/field-types/index.d.ts +107 -30
  169. package/es/tx/builder/field-types/index.mjs +38 -12
  170. package/es/tx/builder/field-types/index.mjs.map +1 -1
  171. package/es/tx/builder/field-types/map.d.ts +13 -0
  172. package/es/tx/builder/field-types/map.mjs +49 -0
  173. package/es/tx/builder/field-types/map.mjs.map +1 -0
  174. package/es/tx/builder/field-types/mptree.d.ts +42 -0
  175. package/es/tx/builder/field-types/mptree.mjs +266 -0
  176. package/es/tx/builder/field-types/mptree.mjs.map +1 -0
  177. package/es/tx/builder/field-types/name-fee.d.ts +2 -3
  178. package/es/tx/builder/field-types/name-fee.mjs +2 -2
  179. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  180. package/es/tx/builder/field-types/name-id.mjs +2 -1
  181. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  182. package/es/tx/builder/field-types/name.mjs.map +1 -1
  183. package/es/tx/builder/field-types/nonce.d.ts +14 -0
  184. package/es/tx/builder/field-types/nonce.mjs +29 -0
  185. package/es/tx/builder/field-types/nonce.mjs.map +1 -0
  186. package/es/tx/builder/field-types/pointers.mjs +2 -2
  187. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  188. package/es/tx/builder/field-types/raw.d.ts +6 -0
  189. package/es/tx/builder/field-types/raw.mjs +13 -0
  190. package/es/tx/builder/field-types/raw.mjs.map +1 -0
  191. package/es/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  192. package/es/tx/builder/field-types/short-u-int-const.mjs +20 -0
  193. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
  194. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  195. package/es/tx/builder/field-types/string.d.ts +6 -0
  196. package/es/tx/builder/field-types/string.mjs +10 -0
  197. package/es/tx/builder/field-types/string.mjs.map +1 -0
  198. package/es/tx/builder/field-types/ttl.d.ts +11 -0
  199. package/es/tx/builder/field-types/ttl.mjs +21 -0
  200. package/es/tx/builder/field-types/ttl.mjs.map +1 -0
  201. package/es/tx/builder/field-types/u-int.d.ts +1 -2
  202. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  203. package/es/tx/builder/field-types/wrapped.d.ts +14 -0
  204. package/es/tx/builder/field-types/wrapped.mjs +22 -0
  205. package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
  206. package/es/tx/builder/helpers.mjs.map +1 -1
  207. package/es/tx/builder/index.d.ts +18 -36
  208. package/es/tx/builder/index.mjs +65 -236
  209. package/es/tx/builder/index.mjs.map +1 -1
  210. package/es/tx/builder/schema.d.ts +2734 -1324
  211. package/es/tx/builder/schema.generated.d.ts +2011 -0
  212. package/es/tx/builder/schema.generated.mjs +2 -0
  213. package/es/tx/builder/schema.generated.mjs.map +1 -0
  214. package/es/tx/builder/schema.mjs +459 -223
  215. package/es/tx/builder/schema.mjs.map +1 -1
  216. package/es/tx/execution-cost.d.ts +35 -0
  217. package/es/tx/execution-cost.mjs +123 -0
  218. package/es/tx/execution-cost.mjs.map +1 -0
  219. package/es/tx/transaction-signer.d.ts +6 -0
  220. package/es/tx/transaction-signer.mjs +27 -0
  221. package/es/tx/transaction-signer.mjs.map +1 -0
  222. package/es/tx/validator.d.ts +3 -5
  223. package/es/tx/validator.mjs +91 -153
  224. package/es/tx/validator.mjs.map +1 -1
  225. package/es/utils/amount-formatter.mjs +0 -16
  226. package/es/utils/amount-formatter.mjs.map +1 -1
  227. package/es/utils/autorest.d.ts +3 -2
  228. package/es/utils/autorest.mjs +43 -11
  229. package/es/utils/autorest.mjs.map +1 -1
  230. package/es/utils/bytes.mjs +1 -17
  231. package/es/utils/bytes.mjs.map +1 -1
  232. package/es/utils/crypto.mjs +0 -16
  233. package/es/utils/crypto.mjs.map +1 -1
  234. package/es/utils/encoder.mjs.map +1 -1
  235. package/es/utils/errors.d.ts +16 -38
  236. package/es/utils/errors.mjs +3 -43
  237. package/es/utils/errors.mjs.map +1 -1
  238. package/es/utils/hd-wallet.mjs.map +1 -1
  239. package/es/utils/json-big.mjs.map +1 -1
  240. package/es/utils/keystore.mjs.map +1 -1
  241. package/es/utils/other.mjs.map +1 -1
  242. package/es/utils/semver-satisfies.mjs.map +1 -1
  243. package/es/utils/string.mjs +0 -17
  244. package/es/utils/string.mjs.map +1 -1
  245. package/package.json +52 -40
  246. package/src/AeSdkBase.ts +6 -3
  247. package/src/AeSdkMethods.ts +12 -18
  248. package/src/AeSdkWallet.ts +1 -1
  249. package/src/Node.ts +23 -9
  250. package/src/account/Base.ts +13 -24
  251. package/src/account/Generalized.ts +9 -24
  252. package/src/account/Ledger.ts +1 -1
  253. package/src/account/Memory.ts +15 -22
  254. package/src/aens.ts +34 -49
  255. package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
  256. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +18 -24
  257. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
  258. package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
  259. package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
  260. package/src/aepp-wallet-communication/rpc/types.ts +6 -2
  261. package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
  262. package/src/apis/compiler/compiler.ts +3 -27
  263. package/src/apis/compiler/models/index.ts +3 -2
  264. package/src/apis/compiler/models/mappers.ts +15 -2
  265. package/src/apis/node/models/index.ts +16 -15
  266. package/src/apis/node/models/mappers.ts +2 -1
  267. package/src/apis/node/models/parameters.ts +2 -2
  268. package/src/apis/node/node.ts +3 -27
  269. package/src/chain.ts +33 -30
  270. package/src/channel/Base.ts +39 -31
  271. package/src/channel/Contract.ts +18 -32
  272. package/src/channel/Spend.ts +8 -18
  273. package/src/channel/handlers.ts +14 -26
  274. package/src/channel/internal.ts +41 -23
  275. package/src/contract/Contract.ts +188 -228
  276. package/src/contract/compiler/Base.ts +87 -0
  277. package/src/contract/compiler/Cli.ts +128 -0
  278. package/src/contract/compiler/Http.ts +105 -0
  279. package/src/contract/compiler/HttpNode.ts +26 -0
  280. package/src/contract/compiler/getFileSystem.ts +42 -0
  281. package/src/contract/delegation-signature.ts +56 -0
  282. package/src/contract/ga.ts +61 -37
  283. package/src/index-browser.ts +50 -0
  284. package/src/index.ts +4 -56
  285. package/src/oracle.ts +47 -57
  286. package/src/spend.ts +34 -68
  287. package/src/tx/builder/SchemaTypes.ts +79 -0
  288. package/src/tx/builder/constants.ts +34 -3
  289. package/src/tx/builder/field-types/abi-version.ts +44 -0
  290. package/src/tx/builder/field-types/address.ts +23 -13
  291. package/src/tx/builder/field-types/array.ts +19 -0
  292. package/src/tx/builder/field-types/boolean.ts +9 -0
  293. package/src/tx/builder/field-types/coin-amount.ts +8 -5
  294. package/src/tx/builder/field-types/ct-version.ts +83 -0
  295. package/src/tx/builder/field-types/deposit.ts +4 -2
  296. package/src/tx/builder/field-types/encoded.ts +27 -0
  297. package/src/tx/builder/field-types/entry.ts +36 -0
  298. package/src/tx/builder/field-types/enumeration.ts +15 -4
  299. package/src/tx/builder/field-types/fee.ts +41 -19
  300. package/src/tx/builder/field-types/gas-limit.ts +13 -8
  301. package/src/tx/builder/field-types/index.ts +60 -17
  302. package/src/tx/builder/field-types/map.ts +45 -0
  303. package/src/tx/builder/field-types/mptree.ts +243 -0
  304. package/src/tx/builder/field-types/name-fee.ts +3 -3
  305. package/src/tx/builder/field-types/name-id.ts +1 -1
  306. package/src/tx/builder/field-types/nonce.ts +40 -0
  307. package/src/tx/builder/field-types/pointers.ts +2 -2
  308. package/src/tx/builder/field-types/raw.ts +9 -0
  309. package/src/tx/builder/field-types/short-u-int-const.ts +30 -0
  310. package/src/tx/builder/field-types/string.ts +11 -0
  311. package/src/tx/builder/field-types/ttl.ts +24 -0
  312. package/src/tx/builder/field-types/u-int.ts +1 -3
  313. package/src/tx/builder/field-types/wrapped.ts +32 -0
  314. package/src/tx/builder/index.ts +82 -280
  315. package/src/tx/builder/schema.generated.ts +2013 -0
  316. package/src/tx/builder/schema.ts +536 -666
  317. package/src/tx/execution-cost.ts +146 -0
  318. package/src/tx/transaction-signer.ts +27 -0
  319. package/src/tx/validator.ts +100 -154
  320. package/src/utils/amount-formatter.ts +0 -16
  321. package/src/utils/autorest.ts +52 -11
  322. package/src/utils/bytes.ts +1 -17
  323. package/src/utils/crypto.ts +0 -16
  324. package/src/utils/errors.ts +18 -56
  325. package/src/utils/string.ts +0 -17
  326. package/types-legacy/ts4.2/AeSdkBase.d.ts +3 -3
  327. package/types-legacy/ts4.2/AeSdkMethods.d.ts +12 -14
  328. package/types-legacy/ts4.2/Node.d.ts +8 -4
  329. package/types-legacy/ts4.2/account/Base.d.ts +13 -8
  330. package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
  331. package/types-legacy/ts4.2/aens.d.ts +12 -14
  332. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  333. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
  334. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
  335. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
  336. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
  337. package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
  338. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
  339. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  340. package/types-legacy/ts4.2/chain.d.ts +17 -9
  341. package/types-legacy/ts4.2/channel/Base.d.ts +27 -9
  342. package/types-legacy/ts4.2/channel/Contract.d.ts +8 -7
  343. package/types-legacy/ts4.2/channel/Spend.d.ts +5 -1
  344. package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
  345. package/types-legacy/ts4.2/contract/Contract.d.ts +42 -122
  346. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +74 -0
  347. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
  348. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
  349. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
  350. package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
  351. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
  352. package/types-legacy/ts4.2/contract/ga.d.ts +27 -10
  353. package/types-legacy/ts4.2/index-browser.d.ts +40 -0
  354. package/types-legacy/ts4.2/index.d.ts +4 -38
  355. package/types-legacy/ts4.2/oracle.d.ts +12 -17
  356. package/types-legacy/ts4.2/spend.d.ts +19 -27
  357. package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
  358. package/types-legacy/ts4.2/tx/builder/constants.d.ts +31 -2
  359. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +19 -0
  360. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +11 -12
  361. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
  362. package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
  363. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +4 -5
  364. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +72 -0
  365. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +3 -2
  366. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
  367. package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
  368. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -3
  369. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +12 -7
  370. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +7 -3
  371. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
  372. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +113 -30
  373. package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
  374. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +48 -0
  375. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +2 -3
  376. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
  377. package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
  378. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  379. package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
  380. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
  381. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +1 -2
  382. package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
  383. package/types-legacy/ts4.2/tx/builder/index.d.ts +21 -36
  384. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2971 -2926
  385. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
  386. package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
  387. package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
  388. package/types-legacy/ts4.2/tx/validator.d.ts +3 -5
  389. package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
  390. package/types-legacy/ts4.2/utils/errors.d.ts +16 -38
  391. package/types-legacy/ts4.5/AeSdkBase.d.ts +3 -3
  392. package/types-legacy/ts4.5/AeSdkMethods.d.ts +12 -14
  393. package/types-legacy/ts4.5/Node.d.ts +8 -4
  394. package/types-legacy/ts4.5/account/Base.d.ts +13 -8
  395. package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
  396. package/types-legacy/ts4.5/aens.d.ts +12 -14
  397. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  398. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
  399. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
  400. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
  401. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
  402. package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
  403. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
  404. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  405. package/types-legacy/ts4.5/chain.d.ts +17 -9
  406. package/types-legacy/ts4.5/channel/Base.d.ts +27 -9
  407. package/types-legacy/ts4.5/channel/Contract.d.ts +8 -7
  408. package/types-legacy/ts4.5/channel/Spend.d.ts +5 -1
  409. package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
  410. package/types-legacy/ts4.5/contract/Contract.d.ts +42 -122
  411. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +74 -0
  412. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
  413. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
  414. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
  415. package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
  416. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
  417. package/types-legacy/ts4.5/contract/ga.d.ts +27 -10
  418. package/types-legacy/ts4.5/index-browser.d.ts +40 -0
  419. package/types-legacy/ts4.5/index.d.ts +4 -38
  420. package/types-legacy/ts4.5/oracle.d.ts +12 -17
  421. package/types-legacy/ts4.5/spend.d.ts +19 -27
  422. package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
  423. package/types-legacy/ts4.5/tx/builder/constants.d.ts +31 -2
  424. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +19 -0
  425. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +11 -12
  426. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
  427. package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
  428. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +4 -5
  429. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +72 -0
  430. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +3 -2
  431. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
  432. package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
  433. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -3
  434. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +12 -7
  435. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +7 -3
  436. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
  437. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +113 -30
  438. package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
  439. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +48 -0
  440. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +2 -3
  441. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
  442. package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
  443. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  444. package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
  445. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
  446. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +1 -2
  447. package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
  448. package/types-legacy/ts4.5/tx/builder/index.d.ts +21 -36
  449. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2971 -2926
  450. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
  451. package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
  452. package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
  453. package/types-legacy/ts4.5/tx/validator.d.ts +3 -5
  454. package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
  455. package/types-legacy/ts4.5/utils/errors.d.ts +16 -38
  456. package/es/contract/CompilerHttp.d.ts +0 -18
  457. package/es/contract/CompilerHttp.mjs +0 -63
  458. package/es/contract/CompilerHttp.mjs.map +0 -1
  459. package/es/tx/builder/field-types/addresses.d.ts +0 -6
  460. package/es/tx/builder/field-types/addresses.mjs +0 -13
  461. package/es/tx/builder/field-types/addresses.mjs.map +0 -1
  462. package/es/tx/index.d.ts +0 -34
  463. package/es/tx/index.mjs +0 -172
  464. package/es/tx/index.mjs.map +0 -1
  465. package/es/utils/mptree.d.ts +0 -26
  466. package/es/utils/mptree.mjs +0 -143
  467. package/es/utils/mptree.mjs.map +0 -1
  468. package/src/apis/compiler/code-model-v4.yaml +0 -2442
  469. package/src/apis/node/code-model-v4.yaml +0 -10080
  470. package/src/contract/CompilerHttp.ts +0 -67
  471. package/src/tx/builder/field-types/addresses.ts +0 -18
  472. package/src/tx/index.ts +0 -196
  473. package/src/utils/mptree.ts +0 -145
  474. package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +0 -18
  475. package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +0 -6
  476. package/types-legacy/ts4.2/tx/index.d.ts +0 -34
  477. package/types-legacy/ts4.2/utils/mptree.d.ts +0 -32
  478. package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +0 -18
  479. package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +0 -6
  480. package/types-legacy/ts4.5/tx/index.d.ts +0 -34
  481. package/types-legacy/ts4.5/utils/mptree.d.ts +0 -32
@@ -0,0 +1,87 @@
1
+ import { Encoded } from '../../utils/encoder';
2
+
3
+ interface FunctionAci {
4
+ arguments: any[];
5
+ name: string;
6
+ payable: boolean;
7
+ returns: any;
8
+ stateful: boolean;
9
+ }
10
+
11
+ export type Aci = Array<{
12
+ contract?: {
13
+ name: string;
14
+ event?: any;
15
+ functions: FunctionAci[];
16
+ };
17
+ }>;
18
+
19
+ /**
20
+ * A base class for all compiler implementations
21
+ */
22
+ export default abstract class CompilerBase {
23
+ /**
24
+ * Compile contract by contract's path
25
+ * Available only in Node.js
26
+ * @param path - Path to contract source code
27
+ * @returns ACI and bytecode
28
+ */
29
+ abstract compile(path: string): Promise<{
30
+ bytecode: Encoded.ContractBytearray;
31
+ aci: Aci;
32
+ }>;
33
+
34
+ /**
35
+ * Compile contract by contract's source code
36
+ * @param sourceCode - Contract source code as string
37
+ * @param fileSystem - A map of contract filename to the corresponding contract source code to
38
+ * include into the main contract
39
+ * @example
40
+ * ```js
41
+ * {
42
+ * 'library.aes': 'namespace TestLib =\n function sum(x: int, y: int) : int = x + y'
43
+ * }
44
+ * ```
45
+ * @returns ACI and bytecode
46
+ */
47
+ abstract compileBySourceCode(
48
+ sourceCode: string,
49
+ fileSystem?: Record<string, string>,
50
+ ): Promise<{
51
+ bytecode: Encoded.ContractBytearray;
52
+ aci: Aci;
53
+ }>;
54
+
55
+ /**
56
+ * Verify that a contract bytecode is the result of compiling the given source code
57
+ * Available only in Node.js
58
+ * @param bytecode - Contract bytecode to verify
59
+ * @param path - Path to contract source code
60
+ * @returns ACI and bytecode
61
+ */
62
+ abstract validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean>;
63
+
64
+ /**
65
+ * Verify that a contract bytecode is the result of compiling the given source code
66
+ * @param bytecode - Contract bytecode to verify
67
+ * @param sourceCode - Contract source code as string
68
+ * @param fileSystem - A map of contract filename to the corresponding contract source code to
69
+ * include into the main contract
70
+ * @example
71
+ * ```js
72
+ * {
73
+ * 'library.aes': 'namespace TestLib =\n function sum(x: int, y: int) : int = x + y'
74
+ * }
75
+ * ```
76
+ */
77
+ abstract validateBySourceCode(
78
+ bytecode: Encoded.ContractBytearray,
79
+ sourceCode: string,
80
+ fileSystem?: Record<string, string>,
81
+ ): Promise<boolean>;
82
+
83
+ /**
84
+ * @returns Compiler version
85
+ */
86
+ abstract version(): Promise<string>;
87
+ }
@@ -0,0 +1,128 @@
1
+ import { execFile } from 'child_process';
2
+ import { tmpdir } from 'os';
3
+ import { resolve, dirname, basename } from 'path';
4
+ import { mkdir, writeFile, rm } from 'fs/promises';
5
+ import { fileURLToPath } from 'url';
6
+ import CompilerBase, { Aci } from './Base';
7
+ import { Encoded } from '../../utils/encoder';
8
+ import { CompilerError, InternalError, UnsupportedVersionError } from '../../utils/errors';
9
+ import semverSatisfies from '../../utils/semver-satisfies';
10
+
11
+ const getPackagePath = (): string => {
12
+ const path = dirname(fileURLToPath(import.meta.url));
13
+ if (basename(path) === 'dist') return resolve(path, '..');
14
+ if (basename(path) === 'compiler') return resolve(path, '../../..');
15
+ throw new InternalError('Can\'t get package path');
16
+ };
17
+
18
+ /**
19
+ * A wrapper around aesophia_cli, available only in Node.js
20
+ * Assumes that `escript` is available in PATH.
21
+ */
22
+ export default class CompilerCli extends CompilerBase {
23
+ #path: string;
24
+
25
+ #ensureCompatibleVersion: Promise<void>;
26
+
27
+ constructor(
28
+ compilerPath = resolve(getPackagePath(), './bin/aesophia_cli'),
29
+ { ignoreVersion }: { ignoreVersion?: boolean } = {},
30
+ ) {
31
+ super();
32
+ this.#path = compilerPath;
33
+ if (ignoreVersion !== true) {
34
+ this.#ensureCompatibleVersion = this.version().then((version) => {
35
+ const versions = [version, '7.0.1', '8.0.0'] as const;
36
+ if (!semverSatisfies(...versions)) throw new UnsupportedVersionError('compiler', ...versions);
37
+ });
38
+ }
39
+ }
40
+
41
+ async #run(...parameters: string[]): Promise<string> {
42
+ return new Promise((pResolve, pReject) => {
43
+ execFile('escript', [this.#path, ...parameters], (error, stdout, stderr) => {
44
+ if (error != null) pReject(error);
45
+ else if (stderr !== '') pReject(new CompilerError(stderr));
46
+ else pResolve(stdout);
47
+ });
48
+ });
49
+ }
50
+
51
+ static async #saveContractToTmpDir(
52
+ sourceCode: string,
53
+ fileSystem: Record<string, string> = {},
54
+ ): Promise<string> {
55
+ const randomName = (): string => Math.random().toString(36).slice(2);
56
+ const path = resolve(tmpdir(), `aepp-sdk-js-${randomName()}`);
57
+ await mkdir(path);
58
+ const sourceCodePath = resolve(path, `${randomName()}.aes`);
59
+ await writeFile(sourceCodePath, sourceCode);
60
+ await Promise.all(Object.entries(fileSystem)
61
+ .map(async ([name, src]) => {
62
+ const p = resolve(path, name);
63
+ await mkdir(dirname(p), { recursive: true });
64
+ return writeFile(p, src);
65
+ }));
66
+ return sourceCodePath;
67
+ }
68
+
69
+ async compile(path: string): Promise<{
70
+ bytecode: Encoded.ContractBytearray;
71
+ aci: Aci;
72
+ }> {
73
+ await this.#ensureCompatibleVersion;
74
+ try {
75
+ const [bytecode, aci] = await Promise.all([
76
+ this.#run(path),
77
+ this.#run('--create_json_aci', path).then((res) => JSON.parse(res)),
78
+ ]);
79
+ return {
80
+ bytecode: bytecode.trimEnd() as Encoded.ContractBytearray,
81
+ aci: aci as Aci,
82
+ };
83
+ } catch (error) {
84
+ throw new CompilerError(error.message);
85
+ }
86
+ }
87
+
88
+ async compileBySourceCode(sourceCode: string, fileSystem?: Record<string, string>): Promise<{
89
+ bytecode: Encoded.ContractBytearray;
90
+ aci: Aci;
91
+ }> {
92
+ const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);
93
+ try {
94
+ return await this.compile(tmp);
95
+ } finally {
96
+ await rm(dirname(tmp), { recursive: true });
97
+ }
98
+ }
99
+
100
+ async validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean> {
101
+ await this.#ensureCompatibleVersion;
102
+ try {
103
+ return (await this.#run(path, '--validate', bytecode)).includes('Validation successful.');
104
+ } catch (error) {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ async validateBySourceCode(
110
+ bytecode: Encoded.ContractBytearray,
111
+ sourceCode: string,
112
+ fileSystem?: Record<string, string>,
113
+ ): Promise<boolean> {
114
+ const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);
115
+ try {
116
+ return await this.validate(bytecode, tmp);
117
+ } finally {
118
+ await rm(dirname(tmp), { recursive: true });
119
+ }
120
+ }
121
+
122
+ async version(): Promise<string> {
123
+ const verMessage = await this.#run('--version');
124
+ const ver = verMessage.match(/Sophia compiler version ([\d.]+)\n/)?.[1];
125
+ if (ver == null) throw new CompilerError('Can\'t get compiler version');
126
+ return ver;
127
+ }
128
+ }
@@ -0,0 +1,105 @@
1
+ import { RestError } from '@azure/core-rest-pipeline';
2
+ import {
3
+ Compiler as CompilerApi,
4
+ ErrorModel,
5
+ CompilerError as CompilerErrorApi,
6
+ } from '../../apis/compiler';
7
+ import { genErrorFormatterPolicy, genVersionCheckPolicy } from '../../utils/autorest';
8
+ import CompilerBase, { Aci } from './Base';
9
+ import { Encoded } from '../../utils/encoder';
10
+ import { CompilerError, NotImplementedError } from '../../utils/errors';
11
+
12
+ type GeneralCompilerError = ErrorModel & {
13
+ info?: object;
14
+ parameter?: string;
15
+ };
16
+
17
+ /**
18
+ * Contract Compiler over HTTP
19
+ *
20
+ * This class include api call's related to contract compiler functionality.
21
+ * @category contract
22
+ * @example CompilerHttp('COMPILER_URL')
23
+ */
24
+ export default class CompilerHttp extends CompilerBase {
25
+ readonly api: CompilerApi;
26
+
27
+ /**
28
+ * @param compilerUrl - Url for compiler API
29
+ * @param options - Options
30
+ * @param options.ignoreVersion - Don't check compiler version
31
+ */
32
+ constructor(compilerUrl: string, { ignoreVersion }: { ignoreVersion?: boolean } = {}) {
33
+ super();
34
+ this.api = new CompilerApi(compilerUrl, {
35
+ allowInsecureConnection: true,
36
+ additionalPolicies: [
37
+ genErrorFormatterPolicy((body: GeneralCompilerError | CompilerErrorApi[]) => {
38
+ let message = '';
39
+ if ('reason' in body) {
40
+ message += ` ${body.reason
41
+ }${body.parameter != null ? ` in ${body.parameter}` : ''
42
+ // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78
43
+ }${body.info != null ? ` (${JSON.stringify(body.info)})` : ''}`;
44
+ }
45
+ if (Array.isArray(body)) {
46
+ message += `\n${body
47
+ .map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? ` (${e.context})` : ''}`)
48
+ .join('\n')}`;
49
+ }
50
+ return message;
51
+ }),
52
+ ],
53
+ });
54
+ if (ignoreVersion !== true) {
55
+ const versionPromise = this.api.apiVersion()
56
+ .then(({ apiVersion }) => apiVersion, (error) => error);
57
+ this.api.pipeline.addPolicy(
58
+ genVersionCheckPolicy('compiler', '/api-version', versionPromise, '7.1.1', '8.0.0'),
59
+ );
60
+ }
61
+ }
62
+
63
+ async compileBySourceCode(
64
+ sourceCode: string,
65
+ fileSystem?: Record<string, string>,
66
+ ): Promise<{ bytecode: Encoded.ContractBytearray; aci: Aci }> {
67
+ try {
68
+ const res = await this.api.compileContract({ code: sourceCode, options: { fileSystem } });
69
+ // TODO: should be fixed when the compiledAci interface gets updated
70
+ return res as { bytecode: Encoded.ContractBytearray; aci: Aci };
71
+ } catch (error) {
72
+ if (error instanceof RestError && error.statusCode === 400) {
73
+ throw new CompilerError(error.message.replace(/^aci error:/, 'compile error:'));
74
+ }
75
+ throw error;
76
+ }
77
+ }
78
+
79
+ // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
80
+ async compile(path: string): Promise<{ bytecode: Encoded.ContractBytearray; aci: Aci }> {
81
+ throw new NotImplementedError('File system access, use CompilerHttpNode instead');
82
+ }
83
+
84
+ async validateBySourceCode(
85
+ bytecode: Encoded.ContractBytearray,
86
+ sourceCode: string,
87
+ fileSystem?: Record<string, string>,
88
+ ): Promise<boolean> {
89
+ try {
90
+ await this.api.validateByteCode({ bytecode, source: sourceCode, options: { fileSystem } });
91
+ return true;
92
+ } catch {
93
+ return false;
94
+ }
95
+ }
96
+
97
+ // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
98
+ async validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean> {
99
+ throw new NotImplementedError('File system access, use CompilerHttpNode instead');
100
+ }
101
+
102
+ async version(): Promise<string> {
103
+ return (await this.api.version()).version;
104
+ }
105
+ }
@@ -0,0 +1,26 @@
1
+ import { readFile } from 'fs/promises';
2
+ import HttpBrowser from './Http';
3
+ import { Aci } from './Base';
4
+ import { Encoded } from '../../utils/encoder';
5
+ import getFileSystem from './getFileSystem';
6
+
7
+ /**
8
+ * Contract Compiler over HTTP for Nodejs
9
+ *
10
+ * Inherits CompilerHttp and implements `compile`, `validate` methods
11
+ * @category contract
12
+ * @example CompilerHttpNode('COMPILER_URL')
13
+ */
14
+ export default class CompilerHttpNode extends HttpBrowser {
15
+ override async compile(path: string): Promise<{ bytecode: Encoded.ContractBytearray; aci: Aci }> {
16
+ const fileSystem = await getFileSystem(path);
17
+ const sourceCode = await readFile(path, 'utf8');
18
+ return this.compileBySourceCode(sourceCode, fileSystem);
19
+ }
20
+
21
+ override async validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean> {
22
+ const fileSystem = await getFileSystem(path);
23
+ const sourceCode = await readFile(path, 'utf8');
24
+ return this.validateBySourceCode(bytecode, sourceCode, fileSystem);
25
+ }
26
+ }
@@ -0,0 +1,42 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { dirname, resolve, basename } from 'path';
3
+ import { InternalError } from '../../utils/errors';
4
+
5
+ const defaultIncludes = [
6
+ 'List.aes', 'Option.aes', 'String.aes',
7
+ 'Func.aes', 'Pair.aes', 'Triple.aes',
8
+ 'BLS12_381.aes', 'Frac.aes', 'Set.aes',
9
+ 'Bitwise.aes',
10
+ ];
11
+ const includeRegExp = /^include\s*"([\w/.-]+)"/mi;
12
+ const includesRegExp = new RegExp(includeRegExp.source, `${includeRegExp.flags}g`);
13
+
14
+ async function getFileSystemRec(
15
+ root: string,
16
+ relative: string,
17
+ ): Promise<Record<string, string>> {
18
+ const sourceCode = await readFile(resolve(root, relative), 'utf8');
19
+ const filesystem: Record<string, string> = {};
20
+ await Promise.all((sourceCode.match(includesRegExp) ?? [])
21
+ .map((include) => {
22
+ const m = include.match(includeRegExp);
23
+ if (m?.length !== 2) throw new InternalError('Unexpected match length');
24
+ return m[1];
25
+ })
26
+ .filter((include) => !defaultIncludes.includes(include))
27
+ .map(async (include) => {
28
+ const includePath = resolve(root, include);
29
+ filesystem[include] = await readFile(includePath, 'utf8');
30
+ Object.assign(filesystem, await getFileSystemRec(root, include));
31
+ }));
32
+ return filesystem;
33
+ }
34
+
35
+ /**
36
+ * Reads all files included in the provided contract
37
+ * Available only in Node.js
38
+ * @param path - a path to the main contract source code
39
+ */
40
+ export default async function getFileSystem(path: string): Promise<Record<string, string>> {
41
+ return getFileSystemRec(dirname(path), basename(path));
42
+ }
@@ -0,0 +1,56 @@
1
+ import { decode, Encoded } from '../utils/encoder';
2
+ import { AensName } from '../tx/builder/constants';
3
+ import AccountBase from '../account/Base';
4
+ import { concatBuffers } from '../utils/other';
5
+ import { isNameValid, produceNameId } from '../tx/builder/helpers';
6
+ import Node from '../Node';
7
+
8
+ /**
9
+ * Helper to generate a signature to delegate
10
+ * - pre-claim/claim/transfer/revoke of a name to a contract.
11
+ * - register/extend/respond of an Oracle to a contract.
12
+ * @category contract
13
+ * @param contractAddress - Address of contract to delegate access
14
+ * @param ids - The list of id's to prepend
15
+ * @param options - Options
16
+ * @param options.omitAddress - Prepend delegation signature with an account address
17
+ * @param options.onAccount - Account to use
18
+ * @param options.onNode - Node to use
19
+ * @returns Signature
20
+ * @example
21
+ * ```js
22
+ * const aeSdk = new AeSdk({ ... })
23
+ * const contractAddress = 'ct_asd2ks...'
24
+ * const aensName = 'example.chain'
25
+ * const onAccount = new MemoryAccount(...) // Sign with a specific account
26
+ * // Preclaim signature
27
+ * const preclaimSig = await aeSdk.createDelegationSignature(contractAddress, [], { onAccount })
28
+ * // Claim, transfer and revoke signature
29
+ * const aensDelegationSig = await aeSdk
30
+ * .createDelegationSignature(contractAddress, [aensName], { onAccount })
31
+ *
32
+ * const oracleQueryId = 'oq_...'
33
+ * const onAccount = new MemoryAccount(...) // Sign with a specific account
34
+ * // Oracle register and extend signature
35
+ * const oracleDelegationSig = await aeSdk
36
+ * .createDelegationSignature(contractAddress, [], { onAccount })
37
+ * // Oracle respond signature
38
+ * const respondSig = await aeSdk
39
+ * .createDelegationSignature(contractAddress, [oracleQueryId], { onAccount, omitAddress: true })
40
+ * ```
41
+ */
42
+ export default async function createDelegationSignature(
43
+ contractAddress: Encoded.ContractAddress,
44
+ ids: Array<Encoded.Any | AensName>,
45
+ options: { omitAddress?: boolean; onAccount: AccountBase; onNode: Node },
46
+ ): Promise<Uint8Array> {
47
+ return options.onAccount.sign(
48
+ concatBuffers([
49
+ Buffer.from(await options.onNode.getNetworkId()),
50
+ ...options.omitAddress === true ? [] : [decode(options.onAccount.address)],
51
+ ...ids.map((e) => (isNameValid(e) ? produceNameId(e) : e)).map((e) => decode(e)),
52
+ decode(contractAddress),
53
+ ]),
54
+ options,
55
+ );
56
+ }
@@ -1,37 +1,22 @@
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
-
18
1
  /**
19
2
  * Generalized Account module - routines to use generalized account
20
3
  */
21
4
 
22
- import { Tag } from '../tx/builder/constants';
23
- import { buildContractIdByContractTx } from '../tx/builder';
24
- import { _buildTx, BuildTxOptions } from '../tx';
5
+ import { ConsensusProtocolVersion, Int, Tag } from '../tx/builder/constants';
6
+ import {
7
+ buildContractIdByContractTx, buildTx, buildTxAsync, BuildTxOptions, unpackTx,
8
+ } from '../tx/builder';
25
9
  import { hash } from '../utils/crypto';
26
- import { decode, Encoded } from '../utils/encoder';
27
- import { IllegalArgumentError } from '../utils/errors';
10
+ import {
11
+ decode, encode, Encoded, Encoding,
12
+ } from '../utils/encoder';
13
+ import { ArgumentError, IllegalArgumentError } from '../utils/errors';
28
14
  import { concatBuffers } from '../utils/other';
29
15
  import AccountBase from '../account/Base';
30
16
  import Contract from './Contract';
31
- import { send, SendOptions } from '../spend';
32
17
  import Node from '../Node';
33
- import { getAccount } from '../chain';
34
- import CompilerHttp from './CompilerHttp';
18
+ import { sendTransaction, SendTransactionOptions, getAccount } from '../chain';
19
+ import CompilerBase from './compiler/Base';
35
20
 
36
21
  /**
37
22
  * Convert current account to GA
@@ -44,10 +29,9 @@ import CompilerHttp from './CompilerHttp';
44
29
  */
45
30
  export async function createGeneralizedAccount(
46
31
  authFnName: string,
47
- sourceCode: string,
48
32
  args: any[],
49
33
  {
50
- onAccount, onCompiler, onNode, ...options
34
+ onAccount, onCompiler, onNode, bytecode, aci, sourceCodePath, sourceCode, fileSystem, ...options
51
35
  }: CreateGeneralizedAccountOptions,
52
36
  ): Promise<Readonly<{
53
37
  owner: Encoded.AccountAddress;
@@ -61,11 +45,12 @@ export async function createGeneralizedAccount(
61
45
  }
62
46
 
63
47
  const contract = await Contract.initialize<{ init: (...a: any[]) => void }>({
64
- onAccount, onCompiler, onNode, sourceCode,
48
+ onAccount, onCompiler, onNode, bytecode, aci, sourceCodePath, sourceCode, fileSystem,
65
49
  });
66
50
 
67
- const tx = await _buildTx(Tag.GaAttachTx, {
51
+ const tx = await buildTxAsync({
68
52
  ...options,
53
+ tag: Tag.GaAttachTx,
69
54
  onNode,
70
55
  code: await contract.$compile(),
71
56
  gasLimit: options.gasLimit ?? await contract._estimateGas('init', args, options),
@@ -74,7 +59,7 @@ export async function createGeneralizedAccount(
74
59
  authFun: hash(authFnName),
75
60
  });
76
61
  const contractId = buildContractIdByContractTx(tx);
77
- const { hash: transaction, rawTx } = await send(tx, {
62
+ const { hash: transaction, rawTx } = await sendTransaction(tx, {
78
63
  onNode, onAccount, onCompiler, ...options,
79
64
  });
80
65
 
@@ -88,26 +73,65 @@ export async function createGeneralizedAccount(
88
73
 
89
74
  interface CreateGeneralizedAccountOptions extends
90
75
  BuildTxOptions<Tag.GaAttachTx, 'authFun' | 'callData' | 'code' | 'ownerId' | 'gasLimit'>,
91
- SendOptions {
76
+ SendTransactionOptions,
77
+ Pick<
78
+ Parameters<typeof Contract.initialize>[0],
79
+ 'bytecode' | 'aci' | 'sourceCodePath' | 'sourceCode' | 'fileSystem'
80
+ > {
92
81
  onAccount: AccountBase;
93
- onCompiler: CompilerHttp;
82
+ onCompiler: CompilerBase;
94
83
  onNode: Node;
95
84
  gasLimit?: number;
96
85
  }
97
86
 
98
87
  /**
99
- * Build a transaction hash the same as `Auth.tx_hash`
88
+ * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx payload
100
89
  * @category contract
101
90
  * @param transaction - tx-encoded transaction
102
91
  * @param options - Options
92
+ * @param options.fee - GaMetaTx fee, required in Ceres
93
+ * @param options.gasPrice - GaMetaTx gasPrice, required in Ceres
103
94
  * @param options.onNode - Node to use
104
95
  * @returns Transaction hash
105
96
  */
106
97
  export async function buildAuthTxHash(
98
+ transaction: Encoded.Transaction,
99
+ { fee, gasPrice, onNode }: { fee?: Int; gasPrice?: Int; onNode: Node },
100
+ ): Promise<Buffer> {
101
+ const { nodeNetworkId, consensusProtocolVersion } = await onNode.getNodeInfo();
102
+ let payload = hash(concatBuffers([Buffer.from(nodeNetworkId), decode(transaction)]));
103
+ if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
104
+ if (fee == null) throw new ArgumentError('fee', 'provided (in Ceres)', fee);
105
+ if (gasPrice == null) throw new ArgumentError('gasPrice', 'provided (in Ceres)', gasPrice);
106
+ payload = hash(decode(buildTx({
107
+ tag: Tag.GaMetaTxAuthData,
108
+ fee,
109
+ gasPrice,
110
+ txHash: encode(payload, Encoding.TxHash),
111
+ })));
112
+ }
113
+ return payload;
114
+ }
115
+
116
+ /**
117
+ * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx
118
+ * @category contract
119
+ * @param transaction - tx-encoded signed GaMeta transaction
120
+ * @param options - Options
121
+ * @param options.onNode - Node to use
122
+ * @returns Transaction hash
123
+ */
124
+ export async function buildAuthTxHashByGaMetaTx(
107
125
  transaction: Encoded.Transaction,
108
126
  { onNode }: { onNode: Node },
109
- ): Promise<Uint8Array> {
110
- return new Uint8Array(hash(
111
- concatBuffers([Buffer.from(await onNode.getNetworkId()), decode(transaction)]),
112
- ));
127
+ ): Promise<Buffer> {
128
+ const txParams = unpackTx(transaction, Tag.SignedTx);
129
+ if (txParams.encodedTx.tag !== Tag.GaMetaTx) {
130
+ throw new ArgumentError('transaction', 'to include GaMetaTx', Tag[txParams.encodedTx.tag]);
131
+ }
132
+ return buildAuthTxHash(buildTx(txParams.encodedTx.tx.encodedTx), {
133
+ fee: txParams.encodedTx.fee,
134
+ gasPrice: txParams.encodedTx.gasPrice,
135
+ onNode,
136
+ });
113
137
  }
@@ -0,0 +1,50 @@
1
+ // TODO: avoid `export * from`
2
+ export * from './chain';
3
+ export * from './utils/crypto';
4
+ export * from './utils/keystore';
5
+ export * from './utils/bytes';
6
+ export {
7
+ buildTx, buildTxAsync, buildTxHash, unpackTx, buildContractIdByContractTx,
8
+ } from './tx/builder';
9
+ export * from './tx/builder/helpers';
10
+ export * from './tx/builder/constants';
11
+ // TODO: move to constants
12
+ export {
13
+ ORACLE_TTL_TYPES, ORACLE_TTL, QUERY_TTL, RESPONSE_TTL, DRY_RUN_ACCOUNT, CallReturnType,
14
+ } from './tx/builder/schema';
15
+ export {
16
+ getExecutionCost, getExecutionCostBySignedTx, getExecutionCostUsingNode,
17
+ } from './tx/execution-cost';
18
+ export { default as getTransactionSignerAddress } from './tx/transaction-signer';
19
+ export * from './utils/amount-formatter';
20
+ export * from './utils/hd-wallet';
21
+ export { encode, decode, Encoding } from './utils/encoder';
22
+ export * from './aens';
23
+ export { default as Contract } from './contract/Contract';
24
+ export type { ContractMethodsBase } from './contract/Contract';
25
+ export * from './oracle';
26
+ export * from './spend';
27
+ export * from './contract/ga';
28
+
29
+ export { default as AeSdkMethods } from './AeSdkMethods';
30
+ export { default as AeSdkBase } from './AeSdkBase';
31
+ export { default as AeSdk } from './AeSdk';
32
+ export { default as AeSdkAepp } from './AeSdkAepp';
33
+ export { default as AeSdkWallet } from './AeSdkWallet';
34
+ export { default as Node } from './Node';
35
+ export { default as verifyTransaction } from './tx/validator';
36
+ export { default as AccountBase } from './account/Base';
37
+ export { default as MemoryAccount } from './account/Memory';
38
+ export { default as AccountGeneralized } from './account/Generalized';
39
+ export { default as AccountLedger } from './account/Ledger';
40
+ export { default as AccountLedgerFactory } from './account/LedgerFactory';
41
+ export { default as CompilerBase } from './contract/compiler/Base';
42
+ export { default as CompilerHttp } from './contract/compiler/Http';
43
+ export { default as Channel } from './channel/Contract';
44
+
45
+ export { default as connectionProxy } from './aepp-wallet-communication/connection-proxy';
46
+ export * from './aepp-wallet-communication/schema';
47
+ export { default as walletDetector } from './aepp-wallet-communication/wallet-detector';
48
+ export { default as BrowserRuntimeConnection } from './aepp-wallet-communication/connection/BrowserRuntime';
49
+ export { default as BrowserWindowMessageConnection } from './aepp-wallet-communication/connection/BrowserWindowMessage';
50
+ export * from './utils/errors';