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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.map +1 -1
  3. package/dist/aepp-sdk.browser.js +1 -1
  4. package/dist/aepp-sdk.browser.js.map +1 -1
  5. package/dist/aepp-sdk.js +6580 -8860
  6. package/dist/aepp-sdk.js.map +1 -1
  7. package/es/AeSdk.d.ts +7 -3
  8. package/es/AeSdk.mjs +17 -22
  9. package/es/AeSdk.mjs.map +1 -1
  10. package/es/AeSdkAepp.d.ts +6 -5
  11. package/es/AeSdkAepp.mjs +7 -30
  12. package/es/AeSdkAepp.mjs.map +1 -1
  13. package/es/AeSdkBase.d.ts +18 -140
  14. package/es/AeSdkBase.mjs +27 -185
  15. package/es/AeSdkBase.mjs.map +1 -1
  16. package/es/AeSdkMethods.d.ts +124 -0
  17. package/es/AeSdkMethods.mjs +122 -0
  18. package/es/AeSdkMethods.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +7 -21
  20. package/es/AeSdkWallet.mjs +38 -86
  21. package/es/AeSdkWallet.mjs.map +1 -1
  22. package/es/Node.d.ts +7 -12
  23. package/es/Node.mjs +34 -47
  24. package/es/Node.mjs.map +1 -1
  25. package/es/account/Base.d.ts +24 -40
  26. package/es/account/Base.mjs +1 -101
  27. package/es/account/Base.mjs.map +1 -1
  28. package/es/account/Generalized.d.ts +16 -0
  29. package/es/account/Generalized.mjs +111 -0
  30. package/es/account/Generalized.mjs.map +1 -0
  31. package/es/account/Ledger.d.ts +28 -0
  32. package/es/account/Ledger.mjs +101 -0
  33. package/es/account/Ledger.mjs.map +1 -0
  34. package/es/account/LedgerFactory.d.ts +39 -0
  35. package/es/account/LedgerFactory.mjs +81 -0
  36. package/es/account/LedgerFactory.mjs.map +1 -0
  37. package/es/account/Memory.d.ts +13 -17
  38. package/es/account/Memory.mjs +43 -65
  39. package/es/account/Memory.mjs.map +1 -1
  40. package/es/account/Rpc.d.ts +6 -8
  41. package/es/account/Rpc.mjs +14 -32
  42. package/es/account/Rpc.mjs.map +1 -1
  43. package/es/aens.d.ts +3 -3
  44. package/es/aens.mjs +42 -41
  45. package/es/aens.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
  47. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  48. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +3 -7
  49. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
  51. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
  52. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  53. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  54. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
  55. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -41
  56. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  57. package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
  58. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/schema.mjs +14 -68
  60. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
  62. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  63. package/es/apis/compiler/compiler.d.ts +23 -29
  64. package/es/apis/compiler/compiler.mjs +128 -189
  65. package/es/apis/compiler/compiler.mjs.map +1 -1
  66. package/es/apis/compiler/index.mjs.map +1 -1
  67. package/es/apis/compiler/models/index.d.ts +82 -135
  68. package/es/apis/compiler/models/index.mjs +1 -47
  69. package/es/apis/compiler/models/index.mjs.map +1 -1
  70. package/es/apis/compiler/models/mappers.d.ts +8 -8
  71. package/es/apis/compiler/models/mappers.mjs +165 -183
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  73. package/es/apis/compiler/models/parameters.d.ts +0 -1
  74. package/es/apis/compiler/models/parameters.mjs +5 -9
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  76. package/es/apis/node/index.mjs.map +1 -1
  77. package/es/apis/node/models/index.d.ts +48 -48
  78. package/es/apis/node/models/mappers.mjs +12 -6
  79. package/es/apis/node/models/mappers.mjs.map +1 -1
  80. package/es/apis/node/models/parameters.mjs.map +1 -1
  81. package/es/apis/node/node.mjs +43 -84
  82. package/es/apis/node/node.mjs.map +1 -1
  83. package/es/chain.d.ts +1 -1
  84. package/es/chain.mjs +33 -58
  85. package/es/chain.mjs.map +1 -1
  86. package/es/channel/Base.d.ts +195 -0
  87. package/es/channel/Base.mjs +290 -0
  88. package/es/channel/Base.mjs.map +1 -0
  89. package/es/channel/Contract.d.ts +247 -0
  90. package/es/channel/Contract.mjs +420 -0
  91. package/es/channel/Contract.mjs.map +1 -0
  92. package/es/channel/Spend.d.ts +217 -0
  93. package/es/channel/Spend.mjs +383 -0
  94. package/es/channel/Spend.mjs.map +1 -0
  95. package/es/channel/handlers.d.ts +8 -21
  96. package/es/channel/handlers.mjs +141 -891
  97. package/es/channel/handlers.mjs.map +1 -1
  98. package/es/channel/internal.d.ts +27 -21
  99. package/es/channel/internal.mjs +98 -190
  100. package/es/channel/internal.mjs.map +1 -1
  101. package/es/contract/{Compiler.d.ts → CompilerHttp.d.ts} +3 -3
  102. package/es/contract/{Compiler.mjs → CompilerHttp.mjs} +8 -13
  103. package/es/contract/CompilerHttp.mjs.map +1 -0
  104. package/es/contract/Contract.d.ts +235 -0
  105. package/es/contract/Contract.mjs +534 -0
  106. package/es/contract/Contract.mjs.map +1 -0
  107. package/es/contract/ga.d.ts +7 -33
  108. package/es/contract/ga.mjs +20 -112
  109. package/es/contract/ga.mjs.map +1 -1
  110. package/es/index.d.ts +9 -6
  111. package/es/index.mjs +8 -6
  112. package/es/index.mjs.map +1 -1
  113. package/es/oracle.d.ts +5 -5
  114. package/es/oracle.mjs +33 -39
  115. package/es/oracle.mjs.map +1 -1
  116. package/es/spend.d.ts +3 -3
  117. package/es/spend.mjs +17 -20
  118. package/es/spend.mjs.map +1 -1
  119. package/es/tx/builder/constants.d.ts +2 -1
  120. package/es/tx/builder/constants.mjs +12 -12
  121. package/es/tx/builder/constants.mjs.map +1 -1
  122. package/es/tx/builder/field-types/address.d.ts +15 -0
  123. package/es/tx/builder/field-types/address.mjs +42 -0
  124. package/es/tx/builder/field-types/address.mjs.map +1 -0
  125. package/es/tx/builder/field-types/addresses.d.ts +6 -0
  126. package/es/tx/builder/field-types/addresses.mjs +13 -0
  127. package/es/tx/builder/field-types/addresses.mjs.map +1 -0
  128. package/es/tx/builder/field-types/coin-amount.d.ts +1 -2
  129. package/es/tx/builder/field-types/coin-amount.mjs +4 -12
  130. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  131. package/es/tx/builder/field-types/deposit.d.ts +0 -1
  132. package/es/tx/builder/field-types/deposit.mjs +2 -4
  133. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  134. package/es/tx/builder/field-types/enumeration.d.ts +5 -0
  135. package/es/tx/builder/field-types/enumeration.mjs +21 -0
  136. package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
  137. package/es/tx/builder/field-types/fee.d.ts +1 -9
  138. package/es/tx/builder/field-types/fee.mjs +9 -25
  139. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  140. package/es/tx/builder/field-types/field.mjs +0 -2
  141. package/es/tx/builder/field-types/field.mjs.map +1 -1
  142. package/es/tx/builder/field-types/gas-limit.mjs +4 -9
  143. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  144. package/es/tx/builder/field-types/gas-price.d.ts +1 -2
  145. package/es/tx/builder/field-types/gas-price.mjs +3 -7
  146. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  147. package/es/tx/builder/field-types/index.d.ts +23 -11
  148. package/es/tx/builder/field-types/index.mjs +10 -3
  149. package/es/tx/builder/field-types/index.mjs.map +1 -1
  150. package/es/tx/builder/field-types/name-fee.d.ts +0 -1
  151. package/es/tx/builder/field-types/name-fee.mjs +3 -5
  152. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  153. package/es/tx/builder/field-types/name-id.d.ts +1 -4
  154. package/es/tx/builder/field-types/name-id.mjs +4 -10
  155. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  156. package/es/tx/builder/field-types/name.mjs +0 -2
  157. package/es/tx/builder/field-types/name.mjs.map +1 -1
  158. package/es/tx/builder/field-types/pointers.d.ts +23 -0
  159. package/es/tx/builder/field-types/pointers.mjs +36 -0
  160. package/es/tx/builder/field-types/pointers.mjs.map +1 -0
  161. package/es/tx/builder/field-types/short-u-int.mjs +0 -2
  162. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  163. package/es/tx/builder/field-types/u-int.d.ts +1 -1
  164. package/es/tx/builder/field-types/u-int.mjs +3 -4
  165. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  166. package/es/tx/builder/helpers.d.ts +2 -32
  167. package/es/tx/builder/helpers.mjs +19 -71
  168. package/es/tx/builder/helpers.mjs.map +1 -1
  169. package/es/tx/builder/index.d.ts +1 -21
  170. package/es/tx/builder/index.mjs +29 -148
  171. package/es/tx/builder/index.mjs.map +1 -1
  172. package/es/tx/builder/schema.d.ts +336 -176
  173. package/es/tx/builder/schema.mjs +71 -78
  174. package/es/tx/builder/schema.mjs.map +1 -1
  175. package/es/tx/index.d.ts +3 -33
  176. package/es/tx/index.mjs +26 -43
  177. package/es/tx/index.mjs.map +1 -1
  178. package/es/tx/validator.d.ts +2 -2
  179. package/es/tx/validator.mjs +86 -59
  180. package/es/tx/validator.mjs.map +1 -1
  181. package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
  182. package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
  183. package/es/utils/amount-formatter.mjs +4 -10
  184. package/es/utils/amount-formatter.mjs.map +1 -1
  185. package/es/utils/autorest.d.ts +1 -0
  186. package/es/utils/autorest.mjs +17 -19
  187. package/es/utils/autorest.mjs.map +1 -1
  188. package/es/utils/bignumber.mjs +4 -7
  189. package/es/utils/bignumber.mjs.map +1 -1
  190. package/es/utils/bytes.d.ts +0 -17
  191. package/es/utils/bytes.mjs +6 -35
  192. package/es/utils/bytes.mjs.map +1 -1
  193. package/es/utils/crypto.d.ts +15 -8
  194. package/es/utils/crypto.mjs +40 -40
  195. package/es/utils/crypto.mjs.map +1 -1
  196. package/es/utils/encoder-types.d.ts +28 -28
  197. package/es/utils/encoder-types.mjs +0 -1
  198. package/es/utils/encoder-types.mjs.map +1 -1
  199. package/es/utils/encoder.d.ts +0 -1
  200. package/es/utils/encoder.mjs +7 -15
  201. package/es/utils/encoder.mjs.map +1 -1
  202. package/es/utils/errors.d.ts +12 -6
  203. package/es/utils/errors.mjs +87 -163
  204. package/es/utils/errors.mjs.map +1 -1
  205. package/es/utils/hd-wallet.d.ts +27 -19
  206. package/es/utils/hd-wallet.mjs +42 -26
  207. package/es/utils/hd-wallet.mjs.map +1 -1
  208. package/es/utils/json-big.mjs +0 -8
  209. package/es/utils/json-big.mjs.map +1 -1
  210. package/es/utils/keystore.d.ts +2 -0
  211. package/es/utils/keystore.mjs +37 -36
  212. package/es/utils/keystore.mjs.map +1 -1
  213. package/es/utils/mptree.d.ts +1 -1
  214. package/es/utils/mptree.mjs +4 -26
  215. package/es/utils/mptree.mjs.map +1 -1
  216. package/es/utils/other.d.ts +3 -1
  217. package/es/utils/other.mjs +11 -7
  218. package/es/utils/other.mjs.map +1 -1
  219. package/es/utils/semver-satisfies.mjs +0 -3
  220. package/es/utils/semver-satisfies.mjs.map +1 -1
  221. package/es/utils/string.d.ts +0 -12
  222. package/es/utils/string.mjs +1 -21
  223. package/es/utils/string.mjs.map +1 -1
  224. package/package.json +87 -48
  225. package/src/AeSdk.ts +15 -11
  226. package/src/AeSdkAepp.ts +9 -7
  227. package/src/AeSdkBase.ts +28 -202
  228. package/src/AeSdkMethods.ts +170 -0
  229. package/src/AeSdkWallet.ts +16 -47
  230. package/src/Node.ts +11 -15
  231. package/src/account/Base.ts +29 -75
  232. package/src/account/Generalized.ts +98 -0
  233. package/src/account/Ledger.ts +131 -0
  234. package/src/account/LedgerFactory.ts +86 -0
  235. package/src/account/Memory.ts +46 -60
  236. package/src/account/Rpc.ts +17 -26
  237. package/src/aens.ts +10 -9
  238. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +5 -4
  239. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
  240. package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
  241. package/src/aepp-wallet-communication/rpc/types.ts +11 -1
  242. package/src/aepp-wallet-communication/schema.ts +18 -18
  243. package/src/apis/compiler/code-model-v4.yaml +681 -888
  244. package/src/apis/compiler/compiler.ts +113 -154
  245. package/src/apis/compiler/models/index.ts +80 -140
  246. package/src/apis/compiler/models/mappers.ts +165 -183
  247. package/src/apis/compiler/models/parameters.ts +6 -12
  248. package/src/chain.ts +6 -3
  249. package/src/channel/Base.ts +327 -0
  250. package/src/channel/Contract.ts +487 -0
  251. package/src/channel/Spend.ts +403 -0
  252. package/src/channel/handlers.ts +154 -573
  253. package/src/channel/internal.ts +113 -142
  254. package/src/contract/{Compiler.ts → CompilerHttp.ts} +5 -5
  255. package/src/contract/Contract.ts +620 -0
  256. package/src/contract/ga.ts +18 -104
  257. package/src/index.ts +9 -8
  258. package/src/oracle.ts +7 -7
  259. package/src/spend.ts +5 -13
  260. package/src/tx/builder/constants.ts +1 -0
  261. package/src/tx/builder/field-types/address.ts +52 -0
  262. package/src/tx/builder/field-types/addresses.ts +18 -0
  263. package/src/tx/builder/field-types/coin-amount.ts +2 -8
  264. package/src/tx/builder/field-types/enumeration.ts +21 -0
  265. package/src/tx/builder/field-types/fee.ts +1 -3
  266. package/src/tx/builder/field-types/gas-limit.ts +2 -2
  267. package/src/tx/builder/field-types/gas-price.ts +0 -2
  268. package/src/tx/builder/field-types/index.ts +16 -6
  269. package/src/tx/builder/field-types/name-fee.ts +1 -1
  270. package/src/tx/builder/field-types/name-id.ts +7 -10
  271. package/src/tx/builder/field-types/pointers.ts +41 -0
  272. package/src/tx/builder/field-types/u-int.ts +3 -2
  273. package/src/tx/builder/helpers.ts +10 -60
  274. package/src/tx/builder/index.ts +6 -65
  275. package/src/tx/builder/schema.ts +89 -100
  276. package/src/tx/index.ts +19 -15
  277. package/src/tx/validator.ts +36 -18
  278. package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
  279. package/src/utils/autorest.ts +16 -1
  280. package/src/utils/bytes.ts +5 -33
  281. package/src/utils/crypto.ts +23 -16
  282. package/src/utils/encoder.ts +0 -1
  283. package/src/utils/errors.ts +18 -12
  284. package/src/utils/hd-wallet.ts +30 -9
  285. package/src/utils/keystore.ts +24 -21
  286. package/src/utils/other.ts +16 -1
  287. package/src/utils/string.ts +0 -20
  288. package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
  289. package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
  290. package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
  291. package/types-legacy/ts4.2/AeSdkMethods.d.ts +141 -0
  292. package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
  293. package/types-legacy/ts4.2/Node.d.ts +78 -0
  294. package/types-legacy/ts4.2/account/Base.d.ts +52 -0
  295. package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
  296. package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
  297. package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
  298. package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
  299. package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
  300. package/types-legacy/ts4.2/aens.d.ts +222 -0
  301. package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  302. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  303. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  304. package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  305. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  306. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
  307. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
  308. package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  309. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
  310. package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
  311. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
  312. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
  313. package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
  314. package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
  315. package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
  316. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
  317. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
  318. package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
  319. package/types-legacy/ts4.2/chain.d.ts +248 -0
  320. package/types-legacy/ts4.2/channel/Base.d.ts +194 -0
  321. package/types-legacy/ts4.2/channel/Contract.d.ts +247 -0
  322. package/types-legacy/ts4.2/channel/Spend.d.ts +217 -0
  323. package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
  324. package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
  325. package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +18 -0
  326. package/types-legacy/ts4.2/contract/Contract.d.ts +237 -0
  327. package/types-legacy/ts4.2/contract/ga.d.ts +43 -0
  328. package/types-legacy/ts4.2/globals.d.ts +16 -0
  329. package/types-legacy/ts4.2/index.d.ts +39 -0
  330. package/types-legacy/ts4.2/oracle.d.ts +161 -0
  331. package/types-legacy/ts4.2/spend.d.ts +62 -0
  332. package/types-legacy/ts4.2/tx/builder/constants.d.ts +71 -0
  333. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +22 -0
  334. package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +6 -0
  335. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
  336. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
  337. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -0
  338. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +17 -0
  339. package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
  340. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +12 -0
  341. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
  342. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +85 -0
  343. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +19 -0
  344. package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
  345. package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
  346. package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
  347. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
  348. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +8 -0
  349. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
  350. package/types-legacy/ts4.2/tx/builder/index.d.ts +68 -0
  351. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2963 -0
  352. package/types-legacy/ts4.2/tx/index.d.ts +34 -0
  353. package/types-legacy/ts4.2/tx/validator.d.ts +20 -0
  354. package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
  355. package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
  356. package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
  357. package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
  358. package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
  359. package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
  360. package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
  361. package/types-legacy/ts4.2/utils/errors.d.ts +480 -0
  362. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
  363. package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
  364. package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
  365. package/types-legacy/ts4.2/utils/mptree.d.ts +32 -0
  366. package/types-legacy/ts4.2/utils/other.d.ts +31 -0
  367. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
  368. package/types-legacy/ts4.2/utils/string.d.ts +12 -0
  369. package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
  370. package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
  371. package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
  372. package/types-legacy/ts4.5/AeSdkMethods.d.ts +141 -0
  373. package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
  374. package/types-legacy/ts4.5/Node.d.ts +78 -0
  375. package/types-legacy/ts4.5/account/Base.d.ts +52 -0
  376. package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
  377. package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
  378. package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
  379. package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
  380. package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
  381. package/types-legacy/ts4.5/aens.d.ts +222 -0
  382. package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  383. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  384. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  385. package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  386. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  387. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
  388. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
  389. package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  390. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
  391. package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
  392. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
  393. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
  394. package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
  395. package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
  396. package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
  397. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
  398. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
  399. package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
  400. package/types-legacy/ts4.5/chain.d.ts +248 -0
  401. package/types-legacy/ts4.5/channel/Base.d.ts +194 -0
  402. package/types-legacy/ts4.5/channel/Contract.d.ts +247 -0
  403. package/types-legacy/ts4.5/channel/Spend.d.ts +217 -0
  404. package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
  405. package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
  406. package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +18 -0
  407. package/types-legacy/ts4.5/contract/Contract.d.ts +237 -0
  408. package/types-legacy/ts4.5/contract/ga.d.ts +43 -0
  409. package/types-legacy/ts4.5/index.d.ts +38 -0
  410. package/types-legacy/ts4.5/oracle.d.ts +161 -0
  411. package/types-legacy/ts4.5/spend.d.ts +62 -0
  412. package/types-legacy/ts4.5/tx/builder/constants.d.ts +71 -0
  413. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +22 -0
  414. package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +6 -0
  415. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
  416. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
  417. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -0
  418. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +17 -0
  419. package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
  420. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +12 -0
  421. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
  422. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +85 -0
  423. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +19 -0
  424. package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
  425. package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
  426. package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
  427. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
  428. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +8 -0
  429. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
  430. package/types-legacy/ts4.5/tx/builder/index.d.ts +68 -0
  431. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2963 -0
  432. package/types-legacy/ts4.5/tx/index.d.ts +34 -0
  433. package/types-legacy/ts4.5/tx/validator.d.ts +20 -0
  434. package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
  435. package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
  436. package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
  437. package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
  438. package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
  439. package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
  440. package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
  441. package/types-legacy/ts4.5/utils/errors.d.ts +480 -0
  442. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
  443. package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
  444. package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
  445. package/types-legacy/ts4.5/utils/mptree.d.ts +32 -0
  446. package/types-legacy/ts4.5/utils/other.d.ts +31 -0
  447. package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
  448. package/types-legacy/ts4.5/utils/string.d.ts +12 -0
  449. package/es/channel/index.d.ts +0 -625
  450. package/es/channel/index.mjs +0 -975
  451. package/es/channel/index.mjs.map +0 -1
  452. package/es/contract/Compiler.mjs.map +0 -1
  453. package/es/contract/aci.d.ts +0 -127
  454. package/es/contract/aci.mjs +0 -509
  455. package/es/contract/aci.mjs.map +0 -1
  456. package/es/contract/methods.d.ts +0 -71
  457. package/es/contract/methods.mjs +0 -104
  458. package/es/contract/methods.mjs.map +0 -1
  459. package/es/deprecated/index.d.ts +0 -143
  460. package/es/deprecated/index.mjs +0 -162
  461. package/es/deprecated/index.mjs.map +0 -1
  462. package/es/deprecated/methods.d.ts +0 -18
  463. package/es/deprecated/methods.mjs +0 -26
  464. package/es/deprecated/methods.mjs.map +0 -1
  465. package/es/tx/builder/address.d.ts +0 -25
  466. package/es/tx/builder/address.mjs +0 -45
  467. package/es/tx/builder/address.mjs.map +0 -1
  468. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
  469. package/src/channel/index.ts +0 -1025
  470. package/src/contract/aci.ts +0 -538
  471. package/src/contract/methods.ts +0 -123
  472. package/src/deprecated/index.ts +0 -172
  473. package/src/deprecated/methods.ts +0 -25
  474. package/src/tx/builder/address.ts +0 -50
  475. package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
package/es/oracle.mjs CHANGED
@@ -14,7 +14,6 @@
14
14
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
15
  * PERFORMANCE OF THIS SOFTWARE.
16
16
  */
17
-
18
17
  /**
19
18
  * Oracle methods - routines to interact with the æternity oracle system
20
19
  *
@@ -30,9 +29,8 @@ import { ORACLE_TTL, QUERY_FEE, QUERY_TTL, RESPONSE_TTL } from "./tx/builder/sch
30
29
  import { Tag } from "./tx/builder/constants.mjs";
31
30
  import { RequestTimedOutError } from "./utils/errors.mjs";
32
31
  import { decode, encode, Encoding } from "./utils/encoder.mjs";
33
- import { _getPollInterval } from "./chain.mjs";
32
+ import { _getPollInterval, getHeight } from "./chain.mjs";
34
33
  import { _buildTx } from "./tx/index.mjs";
35
-
36
34
  /**
37
35
  * Poll for oracle queries
38
36
  * @category oracle
@@ -45,7 +43,6 @@ import { _buildTx } from "./tx/index.mjs";
45
43
  */
46
44
  export function pollForQueries(oracleId, onQuery, _ref) {
47
45
  var _interval;
48
-
49
46
  let {
50
47
  interval,
51
48
  onNode,
@@ -53,10 +50,8 @@ export function pollForQueries(oracleId, onQuery, _ref) {
53
50
  } = _ref;
54
51
  (_interval = interval) !== null && _interval !== void 0 ? _interval : interval = _getPollInterval('microblock', options);
55
52
  const knownQueryIds = new Set();
56
-
57
53
  const checkNewQueries = async () => {
58
54
  var _await$onNode$getOrac;
59
-
60
55
  const queries = ((_await$onNode$getOrac = (await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries) !== null && _await$onNode$getOrac !== void 0 ? _await$onNode$getOrac : []).filter(_ref2 => {
61
56
  let {
62
57
  id
@@ -71,9 +66,9 @@ export function pollForQueries(oracleId, onQuery, _ref) {
71
66
  });
72
67
  if (queries.length > 0) onQuery(queries);
73
68
  };
69
+ let stopped = false;
74
70
 
75
- let stopped = false; // eslint-disable-next-line @typescript-eslint/no-floating-promises
76
-
71
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
77
72
  (async () => {
78
73
  while (!stopped) {
79
74
  // eslint-disable-line no-unmodified-loop-condition
@@ -82,11 +77,11 @@ export function pollForQueries(oracleId, onQuery, _ref) {
82
77
  await pause(interval);
83
78
  }
84
79
  })();
85
-
86
80
  return () => {
87
81
  stopped = true;
88
82
  };
89
83
  }
84
+
90
85
  /**
91
86
  * Poll for oracle query response
92
87
  * @category oracle
@@ -97,10 +92,8 @@ export function pollForQueries(oracleId, onQuery, _ref) {
97
92
  * @param options.onNode - Node to use
98
93
  * @returns OracleQuery object
99
94
  */
100
-
101
95
  export async function pollForQueryResponse(oracleId, queryId, _ref4) {
102
96
  var _interval2;
103
-
104
97
  let {
105
98
  interval,
106
99
  onNode,
@@ -110,20 +103,21 @@ export async function pollForQueryResponse(oracleId, queryId, _ref4) {
110
103
  let height;
111
104
  let ttl;
112
105
  let response;
113
-
114
106
  do {
115
- if (height != null) await pause(interval);
116
107
  ({
117
108
  response,
118
109
  ttl
119
110
  } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));
120
111
  const responseBuffer = decode(response);
121
112
  if (responseBuffer.length > 0) return responseBuffer.toString();
122
- height = await this.getHeight();
113
+ await pause(interval);
114
+ height = await getHeight({
115
+ onNode
116
+ });
123
117
  } while (ttl >= height);
124
-
125
118
  throw new RequestTimedOutError(height);
126
119
  }
120
+
127
121
  /**
128
122
  * Constructor for OracleQuery Object (helper object for using OracleQuery)
129
123
  * @category oracle
@@ -132,22 +126,24 @@ export async function pollForQueryResponse(oracleId, queryId, _ref4) {
132
126
  * @param options - Options
133
127
  * @returns OracleQuery object
134
128
  */
135
-
136
129
  export async function getQueryObject(oracleId, queryId, options) {
137
130
  const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);
138
- return { ...record,
131
+ return {
132
+ ...record,
139
133
  decodedQuery: decode(record.query).toString(),
140
134
  decodedResponse: decode(record.response).toString(),
141
- respond: async (response, opt) => // eslint-disable-next-line @typescript-eslint/no-use-before-define
142
- respondToQuery(oracleId, queryId, response, { ...options,
135
+ respond: async (response, opt) =>
136
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
137
+ respondToQuery(oracleId, queryId, response, {
138
+ ...options,
143
139
  ...opt
144
140
  }),
145
- pollForResponse: async opt => pollForQueryResponse(oracleId, queryId, { ...options,
141
+ pollForResponse: async opt => pollForQueryResponse(oracleId, queryId, {
142
+ ...options,
146
143
  ...opt
147
144
  })
148
145
  };
149
146
  }
150
-
151
147
  /**
152
148
  * Post query to oracle
153
149
  * @category oracle
@@ -163,9 +159,8 @@ export async function getQueryObject(oracleId, queryId, options) {
163
159
  */
164
160
  export async function postQueryToOracle(oracleId, query, options) {
165
161
  var _options$queryFee;
166
-
167
162
  (_options$queryFee = options.queryFee) !== null && _options$queryFee !== void 0 ? _options$queryFee : options.queryFee = (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString();
168
- const senderId = await options.onAccount.address(options);
163
+ const senderId = options.onAccount.address;
169
164
  const oracleQueryTx = await _buildTx(Tag.OracleQueryTx, {
170
165
  queryTtlType: QUERY_TTL.type,
171
166
  queryTtlValue: QUERY_TTL.value,
@@ -180,11 +175,11 @@ export async function postQueryToOracle(oracleId, query, options) {
180
175
  nonce
181
176
  } = unpackTx(oracleQueryTx, Tag.OracleQueryTx).tx;
182
177
  const queryId = oracleQueryId(senderId, nonce, oracleId);
183
- return { ...(await send(oracleQueryTx, options)),
178
+ return {
179
+ ...(await send(oracleQueryTx, options)),
184
180
  ...(await getQueryObject(oracleId, queryId, options))
185
181
  };
186
182
  }
187
-
188
183
  /**
189
184
  * Extend oracle ttl
190
185
  * @category oracle
@@ -201,15 +196,15 @@ export async function extendOracleTtl(oracleId, options) {
201
196
  oracleTtlType: ORACLE_TTL.type,
202
197
  oracleTtlValue: ORACLE_TTL.value,
203
198
  ...options,
204
- callerId: await options.onAccount.address(options),
199
+ callerId: options.onAccount.address,
205
200
  oracleId
206
201
  });
207
- return { ...(await send(oracleExtendTx, options)),
202
+ return {
203
+ ...(await send(oracleExtendTx, options)),
208
204
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
209
205
  ...(await getOracleObject(oracleId, options))
210
206
  };
211
207
  }
212
-
213
208
  /**
214
209
  * Extend oracle ttl
215
210
  * @category oracle
@@ -227,17 +222,17 @@ export async function respondToQuery(oracleId, queryId, response, options) {
227
222
  responseTtlType: RESPONSE_TTL.type,
228
223
  responseTtlValue: RESPONSE_TTL.value,
229
224
  ...options,
230
- callerId: await options.onAccount.address(options),
225
+ callerId: options.onAccount.address,
231
226
  oracleId,
232
227
  queryId,
233
228
  response
234
229
  });
235
- return { ...(await send(oracleRespondTx, options)),
230
+ return {
231
+ ...(await send(oracleRespondTx, options)),
236
232
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
237
233
  ...(await getOracleObject(oracleId, options))
238
234
  };
239
235
  }
240
-
241
236
  /**
242
237
  * Constructor for Oracle Object (helper object for using Oracle)
243
238
  * @category oracle
@@ -246,7 +241,8 @@ export async function respondToQuery(oracleId, queryId, response, options) {
246
241
  * @returns Oracle object
247
242
  */
248
243
  export async function getOracleObject(oracleId, options) {
249
- return { ...(await options.onNode.getOracleByPubkey(oracleId)),
244
+ return {
245
+ ...(await options.onNode.getOracleByPubkey(oracleId)),
250
246
  queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,
251
247
  ...mapObject({
252
248
  pollQueries: pollForQueries,
@@ -260,21 +256,18 @@ export async function getOracleObject(oracleId, options) {
260
256
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
261
257
  args[_key] = arguments[_key];
262
258
  }
263
-
264
259
  const lastArg = args[args.length - 1];
265
-
266
260
  if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {
267
- Object.assign(lastArg, { ...options,
261
+ Object.assign(lastArg, {
262
+ ...options,
268
263
  ...lastArg
269
264
  });
270
265
  } else args.push(options);
271
-
272
266
  return handler(oracleId, ...args);
273
267
  }];
274
268
  })
275
269
  };
276
270
  }
277
-
278
271
  /**
279
272
  * Register oracle
280
273
  * @category oracle
@@ -289,7 +282,7 @@ export async function getOracleObject(oracleId, options) {
289
282
  * @returns Oracle object
290
283
  */
291
284
  export async function registerOracle(queryFormat, responseFormat, options) {
292
- const accountId = await options.onAccount.address(options);
285
+ const accountId = options.onAccount.address;
293
286
  const oracleRegisterTx = await _buildTx(Tag.OracleRegisterTx, {
294
287
  queryFee: QUERY_FEE,
295
288
  oracleTtlValue: ORACLE_TTL.value,
@@ -299,7 +292,8 @@ export async function registerOracle(queryFormat, responseFormat, options) {
299
292
  queryFormat,
300
293
  responseFormat
301
294
  });
302
- return { ...(await send(oracleRegisterTx, options)),
295
+ return {
296
+ ...(await send(oracleRegisterTx, options)),
303
297
  ...(await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options))
304
298
  };
305
299
  }
package/es/oracle.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.mjs","names":["send","mapObject","pause","oracleQueryId","unpackTx","ORACLE_TTL","QUERY_FEE","QUERY_TTL","RESPONSE_TTL","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","_buildTx","pollForQueries","oracleId","onQuery","interval","onNode","options","knownQueryIds","Set","checkNewQueries","queries","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","add","length","stopped","catch","console","error","pollForQueryResponse","queryId","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","toString","getHeight","getQueryObject","record","decodedQuery","query","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","queryFee","getOracleByPubkey","senderId","onAccount","address","oracleQueryTx","OracleQueryTx","queryTtlType","type","queryTtlValue","value","responseTtlType","responseTtlValue","nonce","tx","extendOracleTtl","oracleExtendTx","OracleExtendTx","oracleTtlType","oracleTtlValue","callerId","getOracleObject","oracleRespondTx","OracleResponseTx","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx","OracleAddress"],"sources":["../src/oracle.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { send, SendOptions } from './spend';\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx } from './tx/builder';\nimport {\n ORACLE_TTL,\n ORACLE_TTL_TYPES,\n QUERY_FEE,\n QUERY_TTL,\n RESPONSE_TTL,\n} from './tx/builder/schema';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (queries: OracleQueries) => void,\n { interval, onNode, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n interval ??= _getPollInterval('microblock', options);\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach(({ id }) => knownQueryIds.add(id));\n if (queries.length > 0) onQuery(queries);\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= _getPollInterval('microblock', options);\n let height;\n let ttl;\n let response;\n do {\n if (height != null) await pause(interval);\n ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n height = await this.getHeight();\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(oracleId, queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[3]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @param options.queryTtl - queryTtl Oracle query time to leave\n * @param options.responseTtl - queryFee Oracle query response time to leave\n * @param options.queryFee - queryFee Oracle query fee\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getQueryObject>>> {\n options.queryFee ??= (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString();\n const senderId = await options.onAccount.address(options);\n\n const oracleQueryTx = await _buildTx(Tag.OracleQueryTx, {\n queryTtlType: QUERY_TTL.type,\n queryTtlValue: QUERY_TTL.value,\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx).tx;\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await send(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof send>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query' | 'queryTtlType' | 'queryTtlValue' | 'responseTtlType' | 'responseTtlValue'>\n& {\n queryTtlType?: ORACLE_TTL_TYPES;\n queryTtlValue?: number;\n responseTtlType?: ORACLE_TTL_TYPES;\n responseTtlValue?: number;\n};\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options object\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @param options.oracleTtlType - Oracle time to leave for extend\n * @param options.oracleTtlValue - Oracle time to leave for extend\n * @returns Oracle object\n */\nexport async function extendOracleTtl(\n oracleId: Encoded.OracleAddress,\n options: ExtendOracleTtlOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleExtendTx = await _buildTx(Tag.OracleExtendTx, {\n oracleTtlType: ORACLE_TTL.type,\n oracleTtlValue: ORACLE_TTL.value,\n ...options,\n callerId: await options.onAccount.address(options),\n oracleId,\n });\n return {\n ...await send(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'oracleTtlType' | 'oracleTtlValue' | 'callerId' | 'oracleId'>\n& { oracleTtlType?: ORACLE_TTL_TYPES; oracleTtlValue?: number };\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @param options.responseTtl - responseTtl Query response time to leave\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function respondToQuery(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleRespondTx = await _buildTx(Tag.OracleResponseTx, {\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n callerId: await options.onAccount.address(options),\n oracleId,\n queryId,\n response,\n });\n return {\n ...await send(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response' | 'responseTtlType' | 'responseTtlValue'>\n& { responseTtlType?: ORACLE_TTL_TYPES; responseTtlValue?: number };\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(oracleId, ...args);\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @param options.queryFee - Oracle query Fee\n * @param options - Options object\n * @param options.abiVersion - Always 0 (do not use virtual machine)\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const accountId = await options.onAccount.address(options);\n const oracleRegisterTx = await _buildTx(Tag.OracleRegisterTx, {\n queryFee: QUERY_FEE,\n oracleTtlValue: ORACLE_TTL.value,\n oracleTtlType: ORACLE_TTL.type,\n ...options,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await send(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat' | 'queryFee' | 'oracleTtlType' | 'oracleTtlValue'>\n& {\n queryFee?: number | string | BigNumber;\n oracleTtlType?: ORACLE_TTL_TYPES;\n oracleTtlValue?: number;\n};\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
1
+ {"version":3,"file":"oracle.mjs","names":["send","mapObject","pause","oracleQueryId","unpackTx","ORACLE_TTL","QUERY_FEE","QUERY_TTL","RESPONSE_TTL","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","getHeight","_buildTx","pollForQueries","oracleId","onQuery","interval","onNode","options","knownQueryIds","Set","checkNewQueries","queries","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","add","length","stopped","catch","console","error","pollForQueryResponse","queryId","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","toString","getQueryObject","record","decodedQuery","query","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","queryFee","getOracleByPubkey","senderId","onAccount","address","oracleQueryTx","OracleQueryTx","queryTtlType","type","queryTtlValue","value","responseTtlType","responseTtlValue","nonce","tx","extendOracleTtl","oracleExtendTx","OracleExtendTx","oracleTtlType","oracleTtlValue","callerId","getOracleObject","oracleRespondTx","OracleResponseTx","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx","OracleAddress"],"sources":["../src/oracle.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { send, SendOptions } from './spend';\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx } from './tx/builder';\nimport {\n ORACLE_TTL,\n ORACLE_TTL_TYPES,\n QUERY_FEE,\n QUERY_TTL,\n RESPONSE_TTL,\n} from './tx/builder/schema';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval, getHeight } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (queries: OracleQueries) => void,\n { interval, onNode, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n interval ??= _getPollInterval('microblock', options);\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach(({ id }) => knownQueryIds.add(id));\n if (queries.length > 0) onQuery(queries);\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= _getPollInterval('microblock', options);\n let height;\n let ttl;\n let response;\n do {\n ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n await pause(interval);\n height = await getHeight({ onNode });\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(oracleId, queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[3]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @param options.queryTtl - queryTtl Oracle query time to leave\n * @param options.responseTtl - queryFee Oracle query response time to leave\n * @param options.queryFee - queryFee Oracle query fee\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getQueryObject>>> {\n options.queryFee ??= (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString();\n const senderId = options.onAccount.address;\n\n const oracleQueryTx = await _buildTx(Tag.OracleQueryTx, {\n queryTtlType: QUERY_TTL.type,\n queryTtlValue: QUERY_TTL.value,\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx).tx;\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await send(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof send>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query' | 'queryTtlType' | 'queryTtlValue' | 'responseTtlType' | 'responseTtlValue'>\n& {\n queryTtlType?: ORACLE_TTL_TYPES;\n queryTtlValue?: number;\n responseTtlType?: ORACLE_TTL_TYPES;\n responseTtlValue?: number;\n};\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options object\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @param options.oracleTtlType - Oracle time to leave for extend\n * @param options.oracleTtlValue - Oracle time to leave for extend\n * @returns Oracle object\n */\nexport async function extendOracleTtl(\n oracleId: Encoded.OracleAddress,\n options: ExtendOracleTtlOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleExtendTx = await _buildTx(Tag.OracleExtendTx, {\n oracleTtlType: ORACLE_TTL.type,\n oracleTtlValue: ORACLE_TTL.value,\n ...options,\n callerId: options.onAccount.address,\n oracleId,\n });\n return {\n ...await send(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'oracleTtlType' | 'oracleTtlValue' | 'callerId' | 'oracleId'>\n& { oracleTtlType?: ORACLE_TTL_TYPES; oracleTtlValue?: number };\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @param options.responseTtl - responseTtl Query response time to leave\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function respondToQuery(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleRespondTx = await _buildTx(Tag.OracleResponseTx, {\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n callerId: options.onAccount.address,\n oracleId,\n queryId,\n response,\n });\n return {\n ...await send(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response' | 'responseTtlType' | 'responseTtlValue'>\n& { responseTtlType?: ORACLE_TTL_TYPES; responseTtlValue?: number };\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(oracleId, ...args);\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @param options.queryFee - Oracle query Fee\n * @param options - Options object\n * @param options.abiVersion - Always 0 (do not use virtual machine)\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const accountId = options.onAccount.address;\n const oracleRegisterTx = await _buildTx(Tag.OracleRegisterTx, {\n queryFee: QUERY_FEE,\n oracleTtlValue: ORACLE_TTL.value,\n oracleTtlType: ORACLE_TTL.type,\n ...options,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await send(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat' | 'queryFee' | 'oracleTtlType' | 'oracleTtlValue'>\n& {\n queryFee?: number | string | BigNumber;\n oracleTtlType?: ORACLE_TTL_TYPES;\n oracleTtlValue?: number;\n};\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
package/es/spend.d.ts CHANGED
@@ -13,7 +13,7 @@ import AccountBase from './account/Base';
13
13
  * @returns Transaction
14
14
  */
15
15
  export declare function send(tx: Encoded.Transaction, options: SendOptions): Promise<SendReturnType>;
16
- declare type SendOptionsType = Parameters<AccountBase['signTransaction']>[1] & Parameters<typeof sendTransaction>[1] & {
16
+ type SendOptionsType = Parameters<AccountBase['signTransaction']>[1] & Parameters<typeof sendTransaction>[1] & {
17
17
  onAccount: AccountBase;
18
18
  };
19
19
  export interface SendOptions extends SendOptionsType {
@@ -29,7 +29,7 @@ interface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {
29
29
  * @returns Transaction
30
30
  */
31
31
  export declare function spend(amount: number | string, recipientIdOrName: Encoded.AccountAddress | AensName, options: SpendOptions): ReturnType<typeof send>;
32
- declare type SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'> & Parameters<typeof resolveName>[2] & {
32
+ type SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'> & Parameters<typeof resolveName>[2] & {
33
33
  onAccount: AccountBase;
34
34
  } & SendOptions;
35
35
  interface SpendOptions extends SpendOptionsType {
@@ -43,7 +43,7 @@ interface SpendOptions extends SpendOptionsType {
43
43
  * @returns Transaction
44
44
  */
45
45
  export declare function transferFunds(fraction: number | string, recipientIdOrName: AensName | Encoded.AccountAddress, options: TransferFundsOptions): ReturnType<typeof send>;
46
- declare type TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'> & Parameters<typeof resolveName>[2] & {
46
+ type TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'> & Parameters<typeof resolveName>[2] & {
47
47
  onAccount: AccountBase;
48
48
  } & SendOptions;
49
49
  interface TransferFundsOptions extends TransferFundsOptionsType {
package/es/spend.mjs CHANGED
@@ -15,12 +15,11 @@
15
15
  * PERFORMANCE OF THIS SOFTWARE.
16
16
  */
17
17
  import BigNumber from 'bignumber.js';
18
- import { sendTransaction, getAccount, getBalance, resolveName } from "./chain.mjs";
18
+ import { sendTransaction, getBalance, resolveName } from "./chain.mjs";
19
19
  import { _buildTx } from "./tx/index.mjs";
20
20
  import { buildTxHash, unpackTx } from "./tx/builder/index.mjs";
21
21
  import { ArgumentError } from "./utils/errors.mjs";
22
22
  import { Tag } from "./tx/builder/constants.mjs";
23
-
24
23
  /**
25
24
  * Sign and post a transaction to the chain
26
25
  * @category chain
@@ -31,18 +30,15 @@ import { Tag } from "./tx/builder/constants.mjs";
31
30
  * @returns Transaction
32
31
  */
33
32
  export async function send(tx, options) {
34
- // TODO: detect authFun in AccountGa
35
- const authFun = options.innerTx === true ? undefined : (await getAccount(await options.onAccount.address(options), options)).authFun;
36
- const signed = await options.onAccount.signTransaction(tx, { ...options,
37
- authFun,
38
- networkId: (await options.onNode.getStatus()).networkId
33
+ const signed = await options.onAccount.signTransaction(tx, {
34
+ ...options,
35
+ networkId: await options.onNode.getNetworkId()
39
36
  });
40
37
  return options.innerTx === true ? {
41
38
  hash: buildTxHash(signed),
42
39
  rawTx: signed
43
40
  } : sendTransaction(signed, options);
44
41
  }
45
-
46
42
  /**
47
43
  * Send coins to another account
48
44
  * @category chain
@@ -52,14 +48,14 @@ export async function send(tx, options) {
52
48
  * @returns Transaction
53
49
  */
54
50
  export async function spend(amount, recipientIdOrName, options) {
55
- return send(await _buildTx(Tag.SpendTx, { ...options,
56
- senderId: await options.onAccount.address(options),
51
+ return send(await _buildTx(Tag.SpendTx, {
52
+ ...options,
53
+ senderId: options.onAccount.address,
57
54
  recipientId: await resolveName(recipientIdOrName, 'account_pubkey', options),
58
55
  amount
59
56
  }), options);
60
57
  }
61
58
  // TODO: Rename to spendFraction
62
-
63
59
  /**
64
60
  * Send a fraction of coin balance to another account
65
61
  * @category chain
@@ -72,29 +68,29 @@ export async function transferFunds(fraction, recipientIdOrName, options) {
72
68
  if (fraction < 0 || fraction > 1) {
73
69
  throw new ArgumentError('fraction', 'a number between 0 and 1', fraction);
74
70
  }
75
-
76
71
  const recipientId = await resolveName(recipientIdOrName, 'account_pubkey', options);
77
- const senderId = await options.onAccount.address(options);
72
+ const senderId = options.onAccount.address;
78
73
  const balance = new BigNumber(await getBalance.bind(options.onAccount)(senderId, options));
79
74
  const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);
80
75
  const {
81
76
  tx: {
82
77
  fee
83
78
  }
84
- } = unpackTx(await _buildTx(Tag.SpendTx, { ...options,
79
+ } = unpackTx(await _buildTx(Tag.SpendTx, {
80
+ ...options,
85
81
  senderId,
86
82
  recipientId,
87
83
  amount: desiredAmount
88
- }), Tag.SpendTx); // Reducing of the amount may reduce transaction fee, so this is not completely accurate
89
-
84
+ }), Tag.SpendTx);
85
+ // Reducing of the amount may reduce transaction fee, so this is not completely accurate
90
86
  const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;
91
- return send(await _buildTx(Tag.SpendTx, { ...options,
87
+ return send(await _buildTx(Tag.SpendTx, {
88
+ ...options,
92
89
  senderId,
93
90
  recipientId,
94
91
  amount
95
92
  }), options);
96
93
  }
97
-
98
94
  /**
99
95
  * Submit transaction of another account paying for it (fee and gas)
100
96
  * @category chain
@@ -103,8 +99,9 @@ export async function transferFunds(fraction, recipientIdOrName, options) {
103
99
  * @returns Object Transaction
104
100
  */
105
101
  export async function payForTransaction(transaction, options) {
106
- return send(await _buildTx(Tag.PayingForTx, { ...options,
107
- payerId: await options.onAccount.address(options),
102
+ return send(await _buildTx(Tag.PayingForTx, {
103
+ ...options,
104
+ payerId: options.onAccount.address,
108
105
  tx: transaction
109
106
  }), options);
110
107
  }
package/es/spend.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"spend.mjs","names":["BigNumber","sendTransaction","getAccount","getBalance","resolveName","_buildTx","buildTxHash","unpackTx","ArgumentError","Tag","send","tx","options","authFun","innerTx","undefined","onAccount","address","signed","signTransaction","networkId","onNode","getStatus","hash","rawTx","spend","amount","recipientIdOrName","SpendTx","senderId","recipientId","transferFunds","fraction","balance","bind","desiredAmount","times","integerValue","ROUND_HALF_UP","fee","plus","gt","minus","payForTransaction","transaction","PayingForTx","payerId"],"sources":["../src/spend.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport {\n sendTransaction, getAccount, getBalance, resolveName,\n} from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport { buildTxHash, unpackTx } from './tx/builder';\nimport { ArgumentError } from './utils/errors';\nimport { Encoded, Encoding } from './utils/encoder';\nimport { Tag, AensName } from './tx/builder/constants';\nimport AccountBase from './account/Base';\n\n/**\n * Sign and post a transaction to the chain\n * @category chain\n * @param tx - Transaction\n * @param options - Options\n * @param options.verify - Verify transaction before broadcast, throw error if not\n * valid\n * @returns Transaction\n */\nexport async function send(\n tx: Encoded.Transaction,\n options: SendOptions,\n): Promise<SendReturnType> {\n // TODO: detect authFun in AccountGa\n const authFun = options.innerTx === true\n ? undefined\n : (await getAccount(await options.onAccount.address(options), options)).authFun;\n\n const signed = await options.onAccount.signTransaction(tx, {\n ...options,\n authFun,\n networkId: (await options.onNode.getStatus()).networkId,\n });\n\n return options.innerTx === true\n ? { hash: buildTxHash(signed), rawTx: signed }\n : sendTransaction(signed, options);\n}\n\ntype SendOptionsType = Parameters<AccountBase['signTransaction']>[1]\n& Parameters<typeof sendTransaction>[1] & { onAccount: AccountBase };\nexport interface SendOptions extends SendOptionsType {}\ninterface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {}\n\n/**\n * Send coins to another account\n * @category chain\n * @param amount - Amount to spend\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function spend(\n amount: number | string,\n recipientIdOrName: Encoded.AccountAddress | AensName,\n options: SpendOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options,\n senderId: await options.onAccount.address(options),\n recipientId: await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n ),\n amount,\n }),\n options,\n );\n}\n\ntype SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface SpendOptions extends SpendOptionsType {}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of coin balance to another account\n * @category chain\n * @param fraction - Fraction of balance to spend (between 0 and 1)\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function transferFunds(\n fraction: number | string,\n recipientIdOrName: AensName | Encoded.AccountAddress,\n options: TransferFundsOptions,\n): ReturnType<typeof send> {\n if (fraction < 0 || fraction > 1) {\n throw new ArgumentError('fraction', 'a number between 0 and 1', fraction);\n }\n const recipientId = await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n );\n const senderId = await options.onAccount.address(options);\n const balance = new BigNumber(\n await getBalance.bind(options.onAccount)(senderId, options),\n );\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);\n const { tx: { fee } } = unpackTx(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount: desiredAmount,\n }),\n Tag.SpendTx,\n );\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount,\n }),\n options,\n );\n}\n\ntype TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface TransferFundsOptions extends TransferFundsOptionsType {}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @category chain\n * @param transaction - tx_<base64>-encoded transaction\n * @param options - Options\n * @returns Object Transaction\n */\nexport async function payForTransaction(\n transaction: Encoded.Transaction,\n options: PayForTransactionOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(\n Tag.PayingForTx,\n { ...options, payerId: await options.onAccount.address(options), tx: transaction },\n ),\n options,\n );\n}\n\ninterface PayForTransactionOptions extends\n BuildTxOptions<Tag.PayingForTx, 'payerId' | 'tx'>, SendOptions {\n onAccount: AccountBase;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAP,MAAsB,cAAtB;SAEEC,e,EAAiBC,U,EAAYC,U,EAAYC,W;SAElCC,Q;SACAC,W,EAAaC,Q;SACbC,a;SAEAC,G;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,IAAf,CACLC,EADK,EAELC,OAFK,EAGoB;EACzB;EACA,MAAMC,OAAO,GAAGD,OAAO,CAACE,OAAR,KAAoB,IAApB,GACZC,SADY,GAEZ,CAAC,MAAMb,UAAU,CAAC,MAAMU,OAAO,CAACI,SAAR,CAAkBC,OAAlB,CAA0BL,OAA1B,CAAP,EAA2CA,OAA3C,CAAjB,EAAsEC,OAF1E;EAIA,MAAMK,MAAM,GAAG,MAAMN,OAAO,CAACI,SAAR,CAAkBG,eAAlB,CAAkCR,EAAlC,EAAsC,EACzD,GAAGC,OADsD;IAEzDC,OAFyD;IAGzDO,SAAS,EAAE,CAAC,MAAMR,OAAO,CAACS,MAAR,CAAeC,SAAf,EAAP,EAAmCF;EAHW,CAAtC,CAArB;EAMA,OAAOR,OAAO,CAACE,OAAR,KAAoB,IAApB,GACH;IAAES,IAAI,EAAEjB,WAAW,CAACY,MAAD,CAAnB;IAA6BM,KAAK,EAAEN;EAApC,CADG,GAEHjB,eAAe,CAACiB,MAAD,EAASN,OAAT,CAFnB;AAGD;;AAOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAea,KAAf,CACLC,MADK,EAELC,iBAFK,EAGLf,OAHK,EAIoB;EACzB,OAAOF,IAAI,CACT,MAAML,QAAQ,CAACI,GAAG,CAACmB,OAAL,EAAc,EAC1B,GAAGhB,OADuB;IAE1BiB,QAAQ,EAAE,MAAMjB,OAAO,CAACI,SAAR,CAAkBC,OAAlB,CAA0BL,OAA1B,CAFU;IAG1BkB,WAAW,EAAE,MAAM1B,WAAW,CAC5BuB,iBAD4B,EAE5B,gBAF4B,EAG5Bf,OAH4B,CAHJ;IAQ1Bc;EAR0B,CAAd,CADL,EAWTd,OAXS,CAAX;AAaD;AAMD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAemB,aAAf,CACLC,QADK,EAELL,iBAFK,EAGLf,OAHK,EAIoB;EACzB,IAAIoB,QAAQ,GAAG,CAAX,IAAgBA,QAAQ,GAAG,CAA/B,EAAkC;IAChC,MAAM,IAAIxB,aAAJ,CAAkB,UAAlB,EAA8B,0BAA9B,EAA0DwB,QAA1D,CAAN;EACD;;EACD,MAAMF,WAAW,GAAG,MAAM1B,WAAW,CACnCuB,iBADmC,EAEnC,gBAFmC,EAGnCf,OAHmC,CAArC;EAKA,MAAMiB,QAAQ,GAAG,MAAMjB,OAAO,CAACI,SAAR,CAAkBC,OAAlB,CAA0BL,OAA1B,CAAvB;EACA,MAAMqB,OAAO,GAAG,IAAIjC,SAAJ,CACd,MAAMG,UAAU,CAAC+B,IAAX,CAAgBtB,OAAO,CAACI,SAAxB,EAAmCa,QAAnC,EAA6CjB,OAA7C,CADQ,CAAhB;EAGA,MAAMuB,aAAa,GAAGF,OAAO,CAACG,KAAR,CAAcJ,QAAd,EAAwBK,YAAxB,CAAqCrC,SAAS,CAACsC,aAA/C,CAAtB;EACA,MAAM;IAAE3B,EAAE,EAAE;MAAE4B;IAAF;EAAN,IAAkBhC,QAAQ,CAC9B,MAAMF,QAAQ,CAACI,GAAG,CAACmB,OAAL,EAAc,EAC1B,GAAGhB,OADuB;IACdiB,QADc;IACJC,WADI;IACSJ,MAAM,EAAES;EADjB,CAAd,CADgB,EAI9B1B,GAAG,CAACmB,OAJ0B,CAAhC,CAdyB,CAoBzB;;EACA,MAAMF,MAAM,GAAGS,aAAa,CAACK,IAAd,CAAmBD,GAAnB,EAAwBE,EAAxB,CAA2BR,OAA3B,IAAsCA,OAAO,CAACS,KAAR,CAAcH,GAAd,CAAtC,GAA2DJ,aAA1E;EACA,OAAOzB,IAAI,CACT,MAAML,QAAQ,CAACI,GAAG,CAACmB,OAAL,EAAc,EAC1B,GAAGhB,OADuB;IACdiB,QADc;IACJC,WADI;IACSJ;EADT,CAAd,CADL,EAITd,OAJS,CAAX;AAMD;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe+B,iBAAf,CACLC,WADK,EAELhC,OAFK,EAGoB;EACzB,OAAOF,IAAI,CACT,MAAML,QAAQ,CACZI,GAAG,CAACoC,WADQ,EAEZ,EAAE,GAAGjC,OAAL;IAAckC,OAAO,EAAE,MAAMlC,OAAO,CAACI,SAAR,CAAkBC,OAAlB,CAA0BL,OAA1B,CAA7B;IAAiED,EAAE,EAAEiC;EAArE,CAFY,CADL,EAKThC,OALS,CAAX;AAOD"}
1
+ {"version":3,"file":"spend.mjs","names":["BigNumber","sendTransaction","getBalance","resolveName","_buildTx","buildTxHash","unpackTx","ArgumentError","Tag","send","tx","options","signed","onAccount","signTransaction","networkId","onNode","getNetworkId","innerTx","hash","rawTx","spend","amount","recipientIdOrName","SpendTx","senderId","address","recipientId","transferFunds","fraction","balance","bind","desiredAmount","times","integerValue","ROUND_HALF_UP","fee","plus","gt","minus","payForTransaction","transaction","PayingForTx","payerId"],"sources":["../src/spend.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport { sendTransaction, getBalance, resolveName } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport { buildTxHash, unpackTx } from './tx/builder';\nimport { ArgumentError } from './utils/errors';\nimport { Encoded, Encoding } from './utils/encoder';\nimport { Tag, AensName } from './tx/builder/constants';\nimport AccountBase from './account/Base';\n\n/**\n * Sign and post a transaction to the chain\n * @category chain\n * @param tx - Transaction\n * @param options - Options\n * @param options.verify - Verify transaction before broadcast, throw error if not\n * valid\n * @returns Transaction\n */\nexport async function send(\n tx: Encoded.Transaction,\n options: SendOptions,\n): Promise<SendReturnType> {\n const signed = await options.onAccount.signTransaction(tx, {\n ...options,\n networkId: await options.onNode.getNetworkId(),\n });\n\n return options.innerTx === true\n ? { hash: buildTxHash(signed), rawTx: signed }\n : sendTransaction(signed, options);\n}\n\ntype SendOptionsType = Parameters<AccountBase['signTransaction']>[1]\n& Parameters<typeof sendTransaction>[1] & { onAccount: AccountBase };\nexport interface SendOptions extends SendOptionsType {}\ninterface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {}\n\n/**\n * Send coins to another account\n * @category chain\n * @param amount - Amount to spend\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function spend(\n amount: number | string,\n recipientIdOrName: Encoded.AccountAddress | AensName,\n options: SpendOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options,\n senderId: options.onAccount.address,\n recipientId: await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n ),\n amount,\n }),\n options,\n );\n}\n\ntype SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface SpendOptions extends SpendOptionsType {}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of coin balance to another account\n * @category chain\n * @param fraction - Fraction of balance to spend (between 0 and 1)\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function transferFunds(\n fraction: number | string,\n recipientIdOrName: AensName | Encoded.AccountAddress,\n options: TransferFundsOptions,\n): ReturnType<typeof send> {\n if (fraction < 0 || fraction > 1) {\n throw new ArgumentError('fraction', 'a number between 0 and 1', fraction);\n }\n const recipientId = await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n );\n const senderId = options.onAccount.address;\n const balance = new BigNumber(\n await getBalance.bind(options.onAccount)(senderId, options),\n );\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);\n const { tx: { fee } } = unpackTx(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount: desiredAmount,\n }),\n Tag.SpendTx,\n );\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount,\n }),\n options,\n );\n}\n\ntype TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface TransferFundsOptions extends TransferFundsOptionsType {}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @category chain\n * @param transaction - tx_<base64>-encoded transaction\n * @param options - Options\n * @returns Object Transaction\n */\nexport async function payForTransaction(\n transaction: Encoded.Transaction,\n options: PayForTransactionOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(\n Tag.PayingForTx,\n { ...options, payerId: options.onAccount.address, tx: transaction },\n ),\n options,\n );\n}\n\ninterface PayForTransactionOptions extends\n BuildTxOptions<Tag.PayingForTx, 'payerId' | 'tx'>, SendOptions {\n onAccount: AccountBase;\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import BigNumber from 'bignumber.js';
2
- export declare type AensName = `${string}.chain`;
2
+ export declare const MAX_AUTH_FUN_GAS = 50000;
3
+ export type AensName = `${string}.chain`;
3
4
  export declare const NAME_TTL = 180000;
4
5
  export declare const NAME_MAX_TTL = 36000;
5
6
  export declare const NAME_MAX_CLIENT_TTL = 84600;
@@ -1,29 +1,27 @@
1
1
  import BigNumber from 'bignumber.js';
2
- import { mapObject } from "../../utils/other.mjs"; // # AENS
2
+ import { mapObject } from "../../utils/other.mjs";
3
+ export const MAX_AUTH_FUN_GAS = 50000;
4
+ // # AENS
3
5
 
4
- export const NAME_TTL = 180000; // # max number of block into the future that the name is going to be available
6
+ export const NAME_TTL = 180000;
7
+ // # max number of block into the future that the name is going to be available
5
8
  // # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update
6
9
  // # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry
7
-
8
10
  export const NAME_MAX_TTL = 36000;
9
11
  export const NAME_MAX_CLIENT_TTL = 84600;
10
12
  export const CLIENT_TTL = NAME_MAX_CLIENT_TTL;
11
- export const MIN_GAS_PRICE = 1e9; // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
12
-
13
+ export const MIN_GAS_PRICE = 1e9;
14
+ // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
13
15
  export const NAME_FEE_MULTIPLIER = 1e14; // 100000000000000
14
-
15
16
  export const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage
16
17
  // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272
17
-
18
18
  export const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day
19
19
  // # this is the max length for a domain that requires a base fee to be paid
20
-
21
20
  export const NAME_MAX_LENGTH_FEE = 31;
22
21
  export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
23
22
  // # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290
24
23
  // # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times
25
24
  // # bid ranges:
26
-
27
25
  export const NAME_BID_RANGES = mapObject({
28
26
  31: 3,
29
27
  30: 5,
@@ -60,6 +58,7 @@ export const NAME_BID_RANGES = mapObject({
60
58
  let [key, value] = _ref;
61
59
  return [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)];
62
60
  });
61
+
63
62
  /**
64
63
  * Enum with tag types
65
64
  * @category transaction builder
@@ -67,9 +66,10 @@ export const NAME_BID_RANGES = mapObject({
67
66
  * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_chain_objects.erl#L39-L97}
68
67
  */
69
68
  // TODO: implement serialisation for commented-out tags
70
-
71
- export let Tag;
72
-
69
+ export let Tag; // KeyBlock = 100,
70
+ // MicroBlock = 101,
71
+ // LightMicroBlock = 102,
72
+ // Pof = 200,
73
73
  (function (Tag) {
74
74
  Tag[Tag["Account"] = 10] = "Account";
75
75
  Tag[Tag["SignedTx"] = 11] = "SignedTx";