@aeternity/aepp-sdk 11.0.0 → 12.1.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 (442) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20764 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +138 -88
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +122 -0
  135. package/es/tx/builder/constants.mjs.map +1 -0
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -240
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -664
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -108
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +118 -0
  218. package/es/utils/encoder.mjs.map +1 -0
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +56 -42
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +170 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +146 -0
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/node-pool/index.mjs +0 -188
  360. package/es/node-pool/index.mjs.map +0 -1
  361. package/es/node.mjs +0 -133
  362. package/es/node.mjs.map +0 -1
  363. package/es/other.d.ts +0 -31
  364. package/es/semver-satisfies.d.ts +0 -1
  365. package/es/string.d.ts +0 -26
  366. package/es/tx/builder/field-types.mjs +0 -74
  367. package/es/tx/builder/field-types.mjs.map +0 -1
  368. package/es/tx/tx-object.mjs +0 -283
  369. package/es/tx/tx-object.mjs.map +0 -1
  370. package/es/tx/tx.mjs +0 -938
  371. package/es/tx/tx.mjs.map +0 -1
  372. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  374. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  376. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  378. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  380. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  381. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  382. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  384. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  386. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  388. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  389. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  390. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  392. package/es/utils/async-init.mjs +0 -64
  393. package/es/utils/async-init.mjs.map +0 -1
  394. package/es/utils/crypto-ts.mjs.map +0 -1
  395. package/es/utils/swagger.mjs +0 -164
  396. package/es/utils/swagger.mjs.map +0 -1
  397. package/src/account/base.js +0 -153
  398. package/src/account/memory.js +0 -83
  399. package/src/account/multiple.js +0 -162
  400. package/src/ae/aens.js +0 -361
  401. package/src/ae/aepp.js +0 -45
  402. package/src/ae/contract.js +0 -148
  403. package/src/ae/index.js +0 -168
  404. package/src/ae/oracle.js +0 -311
  405. package/src/ae/universal.js +0 -47
  406. package/src/ae/wallet.js +0 -50
  407. package/src/chain/index.js +0 -269
  408. package/src/chain/node.js +0 -320
  409. package/src/channel/handlers.js +0 -673
  410. package/src/channel/index.js +0 -898
  411. package/src/channel/internal.js +0 -237
  412. package/src/contract/aci.js +0 -376
  413. package/src/contract/compiler.js +0 -100
  414. package/src/contract/ga/helpers.js +0 -19
  415. package/src/contract/ga/index.js +0 -150
  416. package/src/index.js +0 -89
  417. package/src/node-pool/index.js +0 -172
  418. package/src/node.js +0 -116
  419. package/src/tx/builder/field-types.js +0 -61
  420. package/src/tx/builder/helpers.js +0 -380
  421. package/src/tx/builder/index.js +0 -465
  422. package/src/tx/builder/schema.js +0 -1197
  423. package/src/tx/index.js +0 -301
  424. package/src/tx/tx-object.js +0 -187
  425. package/src/tx/tx.js +0 -631
  426. package/src/tx/validator.js +0 -181
  427. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  428. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  429. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  430. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  431. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  432. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  433. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  434. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  435. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  436. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  437. package/src/utils/async-init.js +0 -45
  438. package/src/utils/crypto.js +0 -229
  439. package/src/utils/hd-wallet.js +0 -100
  440. package/src/utils/json-big.js +0 -26
  441. package/src/utils/keystore.js +0 -219
  442. package/src/utils/swagger.js +0 -156
package/src/oracle.ts ADDED
@@ -0,0 +1,364 @@
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
+ /**
19
+ * Oracle methods - routines to interact with the æternity oracle system
20
+ *
21
+ * The high-level description of the oracle system is
22
+ * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol
23
+ * repository.
24
+ */
25
+
26
+ import BigNumber from 'bignumber.js';
27
+ import { send, SendOptions } from './spend';
28
+ import { mapObject, pause } from './utils/other';
29
+ import { oracleQueryId } from './tx/builder/helpers';
30
+ import { unpackTx } from './tx/builder';
31
+ import {
32
+ ORACLE_TTL,
33
+ ORACLE_TTL_TYPES,
34
+ QUERY_FEE,
35
+ QUERY_TTL,
36
+ RESPONSE_TTL,
37
+ } from './tx/builder/schema';
38
+ import { Tag } from './tx/builder/constants';
39
+ import { RequestTimedOutError } from './utils/errors';
40
+ import {
41
+ decode, encode, Encoded, Encoding,
42
+ } from './utils/encoder';
43
+ import { _getPollInterval } from './chain';
44
+ import { _buildTx, BuildTxOptions } from './tx';
45
+ import Node from './Node';
46
+ import AccountBase from './account/Base';
47
+
48
+ type OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];
49
+
50
+ /**
51
+ * Poll for oracle queries
52
+ * @category oracle
53
+ * @param oracleId - Oracle public key
54
+ * @param onQuery - OnQuery callback
55
+ * @param options - Options object
56
+ * @param options.interval - Poll interval(default: 5000)
57
+ * @param options.onNode - Node to use
58
+ * @returns Callback to stop polling function
59
+ */
60
+ export function pollForQueries(
61
+ oracleId: Encoded.OracleAddress,
62
+ onQuery: (queries: OracleQueries) => void,
63
+ { interval, onNode, ...options }: { interval?: number; onNode: Node }
64
+ & Parameters<typeof _getPollInterval>[1],
65
+ ): () => void {
66
+ interval ??= _getPollInterval('microblock', options);
67
+ const knownQueryIds = new Set();
68
+ const checkNewQueries = async (): Promise<void> => {
69
+ const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])
70
+ .filter(({ id }) => !knownQueryIds.has(id));
71
+ queries.forEach(({ id }) => knownQueryIds.add(id));
72
+ if (queries.length > 0) onQuery(queries);
73
+ };
74
+
75
+ let stopped = false;
76
+
77
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
78
+ (async () => {
79
+ while (!stopped) { // eslint-disable-line no-unmodified-loop-condition
80
+ // TODO: allow to handle this error somehow
81
+ await checkNewQueries().catch(console.error);
82
+ await pause(interval);
83
+ }
84
+ })();
85
+ return () => { stopped = true; };
86
+ }
87
+
88
+ /**
89
+ * Poll for oracle query response
90
+ * @category oracle
91
+ * @param oracleId - Oracle public key
92
+ * @param queryId - Oracle Query id
93
+ * @param options - Options object
94
+ * @param options.interval - Poll interval
95
+ * @param options.onNode - Node to use
96
+ * @returns OracleQuery object
97
+ */
98
+ export async function pollForQueryResponse(
99
+ oracleId: Encoded.OracleAddress,
100
+ queryId: Encoded.OracleQueryId,
101
+ { interval, onNode, ...options }:
102
+ { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],
103
+ ): Promise<string> {
104
+ interval ??= _getPollInterval('microblock', options);
105
+ let height;
106
+ let ttl;
107
+ let response;
108
+ do {
109
+ if (height != null) await pause(interval);
110
+ ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));
111
+ const responseBuffer = decode(response as Encoded.OracleResponse);
112
+ if (responseBuffer.length > 0) return responseBuffer.toString();
113
+ height = await this.getHeight();
114
+ } while (ttl >= height);
115
+ throw new RequestTimedOutError(height);
116
+ }
117
+
118
+ /**
119
+ * Constructor for OracleQuery Object (helper object for using OracleQuery)
120
+ * @category oracle
121
+ * @param oracleId - Oracle public key
122
+ * @param queryId - Oracle Query id
123
+ * @param options - Options
124
+ * @returns OracleQuery object
125
+ */
126
+ export async function getQueryObject(
127
+ oracleId: Encoded.OracleAddress,
128
+ queryId: Encoded.OracleQueryId,
129
+ options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],
130
+ ): Promise<GetQueryObjectReturnType> {
131
+ const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);
132
+ return {
133
+ ...record,
134
+ decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),
135
+ decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),
136
+ respond: async (response, opt) => (
137
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
138
+ respondToQuery(oracleId, queryId, response, { ...options, ...opt })
139
+ ),
140
+ pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),
141
+ };
142
+ }
143
+
144
+ interface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {
145
+ decodedQuery: string;
146
+ decodedResponse: string;
147
+ respond: (response: string, options?: Parameters<typeof respondToQuery>[3]) =>
148
+ ReturnType<typeof respondToQuery>;
149
+ pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>
150
+ ReturnType<typeof pollForQueryResponse>;
151
+ }
152
+
153
+ /**
154
+ * Post query to oracle
155
+ * @category oracle
156
+ * @param oracleId - Oracle public key
157
+ * @param query - Oracle query object
158
+ * @param options - Options object
159
+ * @param options.queryTtl - queryTtl Oracle query time to leave
160
+ * @param options.responseTtl - queryFee Oracle query response time to leave
161
+ * @param options.queryFee - queryFee Oracle query fee
162
+ * @param options.fee - fee Transaction fee
163
+ * @param options.ttl - Transaction time to leave
164
+ * @returns Query object
165
+ */
166
+ export async function postQueryToOracle(
167
+ oracleId: Encoded.OracleAddress,
168
+ query: string,
169
+ options: PostQueryToOracleOptions,
170
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getQueryObject>>> {
171
+ options.queryFee ??= (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString();
172
+ const senderId = await options.onAccount.address(options);
173
+
174
+ const oracleQueryTx = await _buildTx(Tag.OracleQueryTx, {
175
+ queryTtlType: QUERY_TTL.type,
176
+ queryTtlValue: QUERY_TTL.value,
177
+ responseTtlType: RESPONSE_TTL.type,
178
+ responseTtlValue: RESPONSE_TTL.value,
179
+ ...options,
180
+ oracleId,
181
+ senderId,
182
+ query,
183
+ });
184
+ const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx).tx;
185
+ const queryId = oracleQueryId(senderId, nonce, oracleId);
186
+ return {
187
+ ...await send(oracleQueryTx, options),
188
+ ...await getQueryObject(oracleId, queryId, options),
189
+ };
190
+ }
191
+
192
+ type PostQueryToOracleOptionsType = Parameters<typeof send>[1]
193
+ & Parameters<typeof getQueryObject>[2]
194
+ & BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query' | 'queryTtlType' | 'queryTtlValue' | 'responseTtlType' | 'responseTtlValue'>
195
+ & {
196
+ queryTtlType?: ORACLE_TTL_TYPES;
197
+ queryTtlValue?: number;
198
+ responseTtlType?: ORACLE_TTL_TYPES;
199
+ responseTtlValue?: number;
200
+ };
201
+ interface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}
202
+
203
+ /**
204
+ * Extend oracle ttl
205
+ * @category oracle
206
+ * @param oracleId - Oracle public key
207
+ * @param options - Options object
208
+ * @param options.fee - fee Transaction fee
209
+ * @param options.ttl - Transaction time to leave
210
+ * @param options.oracleTtlType - Oracle time to leave for extend
211
+ * @param options.oracleTtlValue - Oracle time to leave for extend
212
+ * @returns Oracle object
213
+ */
214
+ export async function extendOracleTtl(
215
+ oracleId: Encoded.OracleAddress,
216
+ options: ExtendOracleTtlOptions,
217
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
218
+ const oracleExtendTx = await _buildTx(Tag.OracleExtendTx, {
219
+ oracleTtlType: ORACLE_TTL.type,
220
+ oracleTtlValue: ORACLE_TTL.value,
221
+ ...options,
222
+ callerId: await options.onAccount.address(options),
223
+ oracleId,
224
+ });
225
+ return {
226
+ ...await send(oracleExtendTx, options),
227
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
228
+ ...await getOracleObject(oracleId, options),
229
+ };
230
+ }
231
+
232
+ type ExtendOracleTtlOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
233
+ & BuildTxOptions<Tag.OracleExtendTx, 'oracleTtlType' | 'oracleTtlValue' | 'callerId' | 'oracleId'>
234
+ & { oracleTtlType?: ORACLE_TTL_TYPES; oracleTtlValue?: number };
235
+ interface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}
236
+
237
+ /**
238
+ * Extend oracle ttl
239
+ * @category oracle
240
+ * @param oracleId - Oracle public key
241
+ * @param queryId - Oracle query id
242
+ * @param response - Oracle query response
243
+ * @param options - Options object
244
+ * @param options.responseTtl - responseTtl Query response time to leave
245
+ * @param options.fee - Transaction fee
246
+ * @param options.ttl - Transaction time to leave
247
+ * @returns Oracle object
248
+ */
249
+ export async function respondToQuery(
250
+ oracleId: Encoded.OracleAddress,
251
+ queryId: Encoded.OracleQueryId,
252
+ response: string,
253
+ options: RespondToQueryOptions,
254
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
255
+ const oracleRespondTx = await _buildTx(Tag.OracleResponseTx, {
256
+ responseTtlType: RESPONSE_TTL.type,
257
+ responseTtlValue: RESPONSE_TTL.value,
258
+ ...options,
259
+ callerId: await options.onAccount.address(options),
260
+ oracleId,
261
+ queryId,
262
+ response,
263
+ });
264
+ return {
265
+ ...await send(oracleRespondTx, options),
266
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
267
+ ...await getOracleObject(oracleId, options),
268
+ };
269
+ }
270
+
271
+ type RespondToQueryOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
272
+ & BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response' | 'responseTtlType' | 'responseTtlValue'>
273
+ & { responseTtlType?: ORACLE_TTL_TYPES; responseTtlValue?: number };
274
+ interface RespondToQueryOptions extends RespondToQueryOptionsType {}
275
+
276
+ /**
277
+ * Constructor for Oracle Object (helper object for using Oracle)
278
+ * @category oracle
279
+ * @param oracleId - Oracle public key
280
+ * @param options - Options
281
+ * @returns Oracle object
282
+ */
283
+ export async function getOracleObject(
284
+ oracleId: Encoded.OracleAddress,
285
+ options: { onNode: Node; onAccount: AccountBase },
286
+ ): Promise<GetOracleObjectReturnType> {
287
+ return {
288
+ ...await options.onNode.getOracleByPubkey(oracleId),
289
+ queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,
290
+ ...mapObject<Function, Function>(
291
+ {
292
+ pollQueries: pollForQueries,
293
+ postQuery: postQueryToOracle,
294
+ respondToQuery,
295
+ extendOracle: extendOracleTtl,
296
+ getQuery: getQueryObject,
297
+ },
298
+ ([name, handler]) => [
299
+ name,
300
+ (...args: any) => {
301
+ const lastArg = args[args.length - 1];
302
+ if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {
303
+ Object.assign(lastArg, { ...options, ...lastArg });
304
+ } else args.push(options);
305
+ return handler(oracleId, ...args);
306
+ },
307
+ ],
308
+ ),
309
+ } as any;
310
+ }
311
+
312
+ interface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {
313
+ id: Encoded.OracleAddress;
314
+ queries: OracleQueries;
315
+ // TODO: replace getOracleObject with a class
316
+ pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;
317
+ postQuery: Function;
318
+ respondToQuery: Function;
319
+ extendOracle: Function;
320
+ getQuery: Function;
321
+ }
322
+
323
+ /**
324
+ * Register oracle
325
+ * @category oracle
326
+ * @param queryFormat - Format of query
327
+ * @param responseFormat - Format of query response
328
+ * @param options - Options
329
+ * @param options.queryFee - Oracle query Fee
330
+ * @param options - Options object
331
+ * @param options.abiVersion - Always 0 (do not use virtual machine)
332
+ * @param options.fee - Transaction fee
333
+ * @param options.ttl - Transaction time to leave
334
+ * @returns Oracle object
335
+ */
336
+ export async function registerOracle(
337
+ queryFormat: string,
338
+ responseFormat: string,
339
+ options: RegisterOracleOptions,
340
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
341
+ const accountId = await options.onAccount.address(options);
342
+ const oracleRegisterTx = await _buildTx(Tag.OracleRegisterTx, {
343
+ queryFee: QUERY_FEE,
344
+ oracleTtlValue: ORACLE_TTL.value,
345
+ oracleTtlType: ORACLE_TTL.type,
346
+ ...options,
347
+ accountId,
348
+ queryFormat,
349
+ responseFormat,
350
+ });
351
+ return {
352
+ ...await send(oracleRegisterTx, options),
353
+ ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),
354
+ };
355
+ }
356
+
357
+ type RegisterOracleOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
358
+ & BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat' | 'queryFee' | 'oracleTtlType' | 'oracleTtlValue'>
359
+ & {
360
+ queryFee?: number | string | BigNumber;
361
+ oracleTtlType?: ORACLE_TTL_TYPES;
362
+ oracleTtlValue?: number;
363
+ };
364
+ interface RegisterOracleOptions extends RegisterOracleOptionsType {}
package/src/spend.ts ADDED
@@ -0,0 +1,164 @@
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
+ import BigNumber from 'bignumber.js';
18
+ import {
19
+ sendTransaction, getAccount, getBalance, resolveName,
20
+ } from './chain';
21
+ import { _buildTx, BuildTxOptions } from './tx';
22
+ import { buildTxHash, unpackTx } from './tx/builder';
23
+ import { ArgumentError } from './utils/errors';
24
+ import { Encoded, Encoding } from './utils/encoder';
25
+ import { Tag, AensName } from './tx/builder/constants';
26
+ import AccountBase from './account/Base';
27
+
28
+ /**
29
+ * Sign and post a transaction to the chain
30
+ * @category chain
31
+ * @param tx - Transaction
32
+ * @param options - Options
33
+ * @param options.verify - Verify transaction before broadcast, throw error if not
34
+ * valid
35
+ * @returns Transaction
36
+ */
37
+ export async function send(
38
+ tx: Encoded.Transaction,
39
+ options: SendOptions,
40
+ ): Promise<SendReturnType> {
41
+ // TODO: detect authFun in AccountGa
42
+ const authFun = options.innerTx === true
43
+ ? undefined
44
+ : (await getAccount(await options.onAccount.address(options), options)).authFun;
45
+
46
+ const signed = await options.onAccount.signTransaction(tx, {
47
+ ...options,
48
+ authFun,
49
+ networkId: (await options.onNode.getStatus()).networkId,
50
+ });
51
+
52
+ return options.innerTx === true
53
+ ? { hash: buildTxHash(signed), rawTx: signed }
54
+ : sendTransaction(signed, options);
55
+ }
56
+
57
+ type SendOptionsType = Parameters<AccountBase['signTransaction']>[1]
58
+ & Parameters<typeof sendTransaction>[1] & { onAccount: AccountBase };
59
+ export interface SendOptions extends SendOptionsType {}
60
+ interface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {}
61
+
62
+ /**
63
+ * Send coins to another account
64
+ * @category chain
65
+ * @param amount - Amount to spend
66
+ * @param recipientIdOrName - Address or name of recipient account
67
+ * @param options - Options
68
+ * @returns Transaction
69
+ */
70
+ export async function spend(
71
+ amount: number | string,
72
+ recipientIdOrName: Encoded.AccountAddress | AensName,
73
+ options: SpendOptions,
74
+ ): ReturnType<typeof send> {
75
+ return send(
76
+ await _buildTx(Tag.SpendTx, {
77
+ ...options,
78
+ senderId: await options.onAccount.address(options),
79
+ recipientId: await resolveName<Encoding.AccountAddress>(
80
+ recipientIdOrName,
81
+ 'account_pubkey',
82
+ options,
83
+ ),
84
+ amount,
85
+ }),
86
+ options,
87
+ );
88
+ }
89
+
90
+ type SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>
91
+ & Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;
92
+ interface SpendOptions extends SpendOptionsType {}
93
+
94
+ // TODO: Rename to spendFraction
95
+ /**
96
+ * Send a fraction of coin balance to another account
97
+ * @category chain
98
+ * @param fraction - Fraction of balance to spend (between 0 and 1)
99
+ * @param recipientIdOrName - Address or name of recipient account
100
+ * @param options - Options
101
+ * @returns Transaction
102
+ */
103
+ export async function transferFunds(
104
+ fraction: number | string,
105
+ recipientIdOrName: AensName | Encoded.AccountAddress,
106
+ options: TransferFundsOptions,
107
+ ): ReturnType<typeof send> {
108
+ if (fraction < 0 || fraction > 1) {
109
+ throw new ArgumentError('fraction', 'a number between 0 and 1', fraction);
110
+ }
111
+ const recipientId = await resolveName<Encoding.AccountAddress>(
112
+ recipientIdOrName,
113
+ 'account_pubkey',
114
+ options,
115
+ );
116
+ const senderId = await options.onAccount.address(options);
117
+ const balance = new BigNumber(
118
+ await getBalance.bind(options.onAccount)(senderId, options),
119
+ );
120
+ const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);
121
+ const { tx: { fee } } = unpackTx(
122
+ await _buildTx(Tag.SpendTx, {
123
+ ...options, senderId, recipientId, amount: desiredAmount,
124
+ }),
125
+ Tag.SpendTx,
126
+ );
127
+ // Reducing of the amount may reduce transaction fee, so this is not completely accurate
128
+ const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;
129
+ return send(
130
+ await _buildTx(Tag.SpendTx, {
131
+ ...options, senderId, recipientId, amount,
132
+ }),
133
+ options,
134
+ );
135
+ }
136
+
137
+ type TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>
138
+ & Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;
139
+ interface TransferFundsOptions extends TransferFundsOptionsType {}
140
+
141
+ /**
142
+ * Submit transaction of another account paying for it (fee and gas)
143
+ * @category chain
144
+ * @param transaction - tx_<base64>-encoded transaction
145
+ * @param options - Options
146
+ * @returns Object Transaction
147
+ */
148
+ export async function payForTransaction(
149
+ transaction: Encoded.Transaction,
150
+ options: PayForTransactionOptions,
151
+ ): ReturnType<typeof send> {
152
+ return send(
153
+ await _buildTx(
154
+ Tag.PayingForTx,
155
+ { ...options, payerId: await options.onAccount.address(options), tx: transaction },
156
+ ),
157
+ options,
158
+ );
159
+ }
160
+
161
+ interface PayForTransactionOptions extends
162
+ BuildTxOptions<Tag.PayingForTx, 'payerId' | 'tx'>, SendOptions {
163
+ onAccount: AccountBase;
164
+ }
@@ -0,0 +1,50 @@
1
+ import { ArgumentError, PrefixNotFoundError, TagNotFoundError } from '../../utils/errors';
2
+ import { toBytes } from '../../utils/bytes';
3
+ import {
4
+ decode, encode, Encoded, Encoding,
5
+ } from '../../utils/encoder';
6
+ import { isItemOfArray } from '../../utils/other';
7
+
8
+ /**
9
+ * Map of prefix to ID tag constant
10
+ * @see {@link https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type}
11
+ * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_id.erl#L97-L102}
12
+ * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L163-L168}
13
+ */
14
+ const idTagToEncoding = [
15
+ Encoding.AccountAddress,
16
+ Encoding.Name,
17
+ Encoding.Commitment,
18
+ Encoding.OracleAddress,
19
+ Encoding.ContractAddress,
20
+ Encoding.Channel,
21
+ ] as const;
22
+
23
+ type AddressEncodings = typeof idTagToEncoding[number];
24
+
25
+ /**
26
+ * Utility function to create and _id type
27
+ * @category transaction builder
28
+ * @param hashId - Encoded hash
29
+ * @returns Buffer Buffer with ID tag and decoded HASh
30
+ */
31
+ export function writeId(hashId: Encoded.Generic<AddressEncodings>): Buffer {
32
+ if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId);
33
+ const encoding = hashId.slice(0, 2);
34
+ if (!isItemOfArray(encoding, idTagToEncoding)) throw new TagNotFoundError(encoding);
35
+ const idTag = idTagToEncoding.indexOf(encoding) + 1;
36
+ return Buffer.from([...toBytes(idTag), ...decode(hashId)]);
37
+ }
38
+
39
+ /**
40
+ * Utility function to read and _id type
41
+ * @category transaction builder
42
+ * @param buf - Data
43
+ * @returns Encoided hash string with prefix
44
+ */
45
+ export function readId(buf: Buffer): Encoded.Generic<AddressEncodings> {
46
+ const idTag = Buffer.from(buf).readUIntBE(0, 1);
47
+ const encoding = idTagToEncoding[idTag - 1];
48
+ if (encoding == null) throw new PrefixNotFoundError(idTag);
49
+ return encode(buf.slice(1, buf.length), encoding);
50
+ }
@@ -0,0 +1,126 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { mapObject } from '../../utils/other';
3
+
4
+ // # AENS
5
+ export type AensName = `${string}.chain`;
6
+ export const NAME_TTL = 180000;
7
+ // # max number of block into the future that the name is going to be available
8
+ // # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update
9
+ // # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry
10
+ export const NAME_MAX_TTL = 36000;
11
+ export const NAME_MAX_CLIENT_TTL = 84600;
12
+ export const CLIENT_TTL = NAME_MAX_CLIENT_TTL;
13
+ export const MIN_GAS_PRICE = 1e9;
14
+ // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
15
+ export const NAME_FEE_MULTIPLIER = 1e14; // 100000000000000
16
+ export const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage
17
+ // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272
18
+ export const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day
19
+ // # this is the max length for a domain that requires a base fee to be paid
20
+ export const NAME_MAX_LENGTH_FEE = 31;
21
+ export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
22
+ // # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290
23
+ // # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times
24
+ // # bid ranges:
25
+ export const NAME_BID_RANGES = mapObject({
26
+ 31: 3,
27
+ 30: 5,
28
+ 29: 8,
29
+ 28: 13,
30
+ 27: 21,
31
+ 26: 34,
32
+ 25: 55,
33
+ 24: 89,
34
+ 23: 144,
35
+ 22: 233,
36
+ 21: 377,
37
+ 20: 610,
38
+ 19: 987,
39
+ 18: 1597,
40
+ 17: 2584,
41
+ 16: 4181,
42
+ 15: 6765,
43
+ 14: 10946,
44
+ 13: 17711,
45
+ 12: 28657,
46
+ 11: 46368,
47
+ 10: 75025,
48
+ 9: 121393,
49
+ 8: 196418,
50
+ 7: 317811,
51
+ 6: 514229,
52
+ 5: 832040,
53
+ 4: 1346269,
54
+ 3: 2178309,
55
+ 2: 3524578,
56
+ 1: 5702887,
57
+ }, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)]);
58
+
59
+ /**
60
+ * Enum with tag types
61
+ * @category transaction builder
62
+ * @see {@link https://github.com/aeternity/protocol/blob/0f6dee3d9d1e8e2469816798f5c7587a6c918f94/serializations.md#binary-serialization}
63
+ * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_chain_objects.erl#L39-L97}
64
+ */
65
+ // TODO: implement serialisation for commented-out tags
66
+ export enum Tag {
67
+ Account = 10,
68
+ SignedTx = 11,
69
+ SpendTx = 12,
70
+ // Oracle = 20,
71
+ // OracleQuery = 21,
72
+ OracleRegisterTx = 22,
73
+ OracleQueryTx = 23,
74
+ OracleResponseTx = 24,
75
+ OracleExtendTx = 25,
76
+ // Name = 30,
77
+ // NameCommitment = 31,
78
+ NameClaimTx = 32,
79
+ NamePreclaimTx = 33,
80
+ NameUpdateTx = 34,
81
+ NameRevokeTx = 35,
82
+ NameTransferTx = 36,
83
+ // NameAuction = 37,
84
+ Contract = 40,
85
+ ContractCall = 41,
86
+ ContractCreateTx = 42,
87
+ ContractCallTx = 43,
88
+ ChannelCreateTx = 50,
89
+ // ChannelSetDelegatesTx = 501,
90
+ ChannelDepositTx = 51,
91
+ ChannelWithdrawTx = 52,
92
+ ChannelForceProgressTx = 521,
93
+ ChannelCloseMutualTx = 53,
94
+ ChannelCloseSoloTx = 54,
95
+ ChannelSlashTx = 55,
96
+ ChannelSettleTx = 56,
97
+ ChannelOffChainTx = 57,
98
+ ChannelOffChainUpdateTransfer = 570,
99
+ ChannelOffChainUpdateDeposit = 571,
100
+ ChannelOffChainUpdateWithdraw = 572,
101
+ ChannelOffChainUpdateCreateContract = 573,
102
+ ChannelOffChainUpdateCallContract = 574,
103
+ // ChannelOffChainUpdateMeta = 576,
104
+ ChannelClientReconnectTx = 575,
105
+ Channel = 58,
106
+ ChannelSnapshotSoloTx = 59,
107
+ TreesPoi = 60,
108
+ // TreesDb = 61,
109
+ StateTrees = 62,
110
+ Mtree = 63,
111
+ MtreeValue = 64,
112
+ ContractsMtree = 621,
113
+ CallsMtree = 622,
114
+ ChannelsMtree = 623,
115
+ NameserviceMtree = 624,
116
+ OraclesMtree = 625,
117
+ AccountsMtree = 626,
118
+ CompilerSophia = 70,
119
+ GaAttachTx = 80,
120
+ GaMetaTx = 81,
121
+ PayingForTx = 82,
122
+ // KeyBlock = 100,
123
+ // MicroBlock = 101,
124
+ // LightMicroBlock = 102,
125
+ // Pof = 200,
126
+ }