@aeternity/aepp-sdk 10.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -14
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -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 +69 -0
  14. package/es/AeSdkAepp.mjs +175 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +212 -0
  17. package/es/AeSdkBase.mjs +310 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +103 -0
  20. package/es/AeSdkWallet.mjs +322 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +44 -0
  23. package/es/Node.mjs +141 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +65 -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 +25 -0
  29. package/es/account/Memory.mjs +81 -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 +79 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +209 -0
  35. package/es/aens.mjs +332 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -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 +118 -0
  56. package/es/aepp-wallet-communication/schema.mjs +214 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -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 +1061 -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 +4164 -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 +220 -0
  92. package/es/chain.mjs +524 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/{handlers.js → handlers.mjs} +163 -130
  96. package/es/channel/handlers.mjs.map +1 -0
  97. package/es/channel/index.d.ts +634 -0
  98. package/es/channel/index.mjs +978 -0
  99. package/es/channel/index.mjs.map +1 -0
  100. package/es/channel/internal.d.ts +100 -0
  101. package/es/channel/internal.mjs +328 -0
  102. package/es/channel/internal.mjs.map +1 -0
  103. package/es/contract/Compiler.d.ts +17 -0
  104. package/es/contract/Compiler.mjs +67 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +125 -0
  107. package/es/contract/aci.mjs +496 -0
  108. package/es/contract/aci.mjs.map +1 -0
  109. package/es/contract/ga.d.ts +68 -0
  110. package/es/contract/ga.mjs +190 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +68 -0
  113. package/es/contract/methods.mjs +101 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/index.d.ts +32 -0
  116. package/es/index.mjs +49 -0
  117. package/es/index.mjs.map +1 -0
  118. package/es/oracle.d.ts +154 -0
  119. package/es/oracle.mjs +288 -0
  120. package/es/oracle.mjs.map +1 -0
  121. package/es/spend.d.ts +61 -0
  122. package/es/spend.mjs +122 -0
  123. package/es/spend.mjs.map +1 -0
  124. package/es/tx/builder/constants.d.ts +41 -0
  125. package/es/tx/builder/constants.mjs +100 -0
  126. package/es/tx/builder/constants.mjs.map +1 -0
  127. package/es/tx/builder/field-types.d.ts +62 -0
  128. package/es/tx/builder/field-types.mjs +126 -0
  129. package/es/tx/builder/field-types.mjs.map +1 -0
  130. package/es/tx/builder/helpers.d.ts +131 -0
  131. package/es/tx/builder/helpers.mjs +223 -0
  132. package/es/tx/builder/helpers.mjs.map +1 -0
  133. package/es/tx/builder/index.d.ts +75 -0
  134. package/es/tx/builder/index.mjs +424 -0
  135. package/es/tx/builder/index.mjs.map +1 -0
  136. package/es/tx/builder/schema.d.ts +350 -0
  137. package/es/tx/builder/schema.mjs +320 -0
  138. package/es/tx/builder/schema.mjs.map +1 -0
  139. package/es/tx/index.d.ts +63 -0
  140. package/es/tx/index.mjs +209 -0
  141. package/es/tx/index.mjs.map +1 -0
  142. package/es/tx/min-fee.d.ts +20 -0
  143. package/es/tx/min-fee.mjs +148 -0
  144. package/es/tx/min-fee.mjs.map +1 -0
  145. package/es/tx/validator.d.ts +19 -0
  146. package/es/tx/validator.mjs +240 -0
  147. package/es/tx/validator.mjs.map +1 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  149. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  151. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  152. package/es/typings/bip32-path/index.d.mjs +2 -0
  153. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  154. package/es/typings/blakejs/index.d.mjs +2 -0
  155. package/es/typings/blakejs/index.d.mjs.map +1 -0
  156. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  157. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  158. package/es/utils/amount-formatter.d.ts +42 -0
  159. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
  160. package/es/utils/amount-formatter.mjs.map +1 -0
  161. package/es/utils/autorest.d.ts +6 -0
  162. package/es/utils/autorest.mjs +97 -0
  163. package/es/utils/autorest.mjs.map +1 -0
  164. package/es/utils/bignumber.d.ts +13 -0
  165. package/es/utils/bignumber.mjs +23 -0
  166. package/es/utils/bignumber.mjs.map +1 -0
  167. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  168. package/es/utils/{bytes.js → bytes.mjs} +26 -22
  169. package/es/utils/bytes.mjs.map +1 -0
  170. package/es/utils/crypto.d.ts +103 -0
  171. package/es/utils/crypto.mjs +221 -0
  172. package/es/utils/crypto.mjs.map +1 -0
  173. package/es/utils/encoder.d.ts +26 -0
  174. package/es/utils/encoder.mjs +102 -0
  175. package/es/utils/encoder.mjs.map +1 -0
  176. package/es/utils/errors.d.ts +481 -0
  177. package/es/utils/errors.mjs +882 -0
  178. package/es/utils/errors.mjs.map +1 -0
  179. package/es/utils/hd-wallet.d.ts +34 -0
  180. package/es/utils/hd-wallet.mjs +122 -0
  181. package/es/utils/hd-wallet.mjs.map +1 -0
  182. package/es/utils/json-big.d.ts +5 -0
  183. package/es/utils/json-big.mjs +41 -0
  184. package/es/utils/json-big.mjs.map +1 -0
  185. package/es/utils/keystore.d.ts +51 -0
  186. package/es/utils/keystore.mjs +145 -0
  187. package/es/utils/keystore.mjs.map +1 -0
  188. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  189. package/es/utils/{mptree.js → mptree.mjs} +33 -25
  190. package/es/utils/mptree.mjs.map +1 -0
  191. package/es/utils/other.d.ts +14 -0
  192. package/es/utils/other.mjs +28 -0
  193. package/es/utils/other.mjs.map +1 -0
  194. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  195. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  196. package/es/utils/semver-satisfies.mjs.map +1 -0
  197. package/es/utils/string.d.ts +24 -0
  198. package/es/utils/{string.js → string.mjs} +9 -11
  199. package/es/utils/string.mjs.map +1 -0
  200. package/package.json +67 -64
  201. package/src/AeSdk.ts +65 -0
  202. package/src/AeSdkAepp.ts +167 -0
  203. package/src/AeSdkBase.ts +320 -0
  204. package/src/AeSdkWallet.ts +332 -0
  205. package/src/Node.ts +167 -0
  206. package/src/account/Base.ts +114 -0
  207. package/src/account/Memory.ts +83 -0
  208. package/src/account/Rpc.ts +67 -0
  209. package/src/aens.ts +391 -0
  210. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  211. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  212. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  213. package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
  214. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  215. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  216. package/src/aepp-wallet-communication/schema.ts +181 -0
  217. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  218. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  219. package/src/apis/compiler/compiler.ts +585 -0
  220. package/src/apis/compiler/index.ts +2 -0
  221. package/src/apis/compiler/models/index.ts +301 -0
  222. package/src/apis/compiler/models/mappers.ts +583 -0
  223. package/src/apis/compiler/models/parameters.ts +93 -0
  224. package/src/apis/node/code-model-v4.yaml +10046 -0
  225. package/src/apis/node/index.ts +2 -0
  226. package/src/apis/node/models/index.ts +1253 -0
  227. package/src/apis/node/models/mappers.ts +4278 -0
  228. package/src/apis/node/models/parameters.ts +188 -0
  229. package/src/apis/node/node.ts +1299 -0
  230. package/src/chain.ts +444 -0
  231. package/src/channel/{handlers.js → handlers.ts} +238 -143
  232. package/src/channel/index.ts +991 -0
  233. package/src/channel/internal.ts +345 -0
  234. package/src/contract/Compiler.ts +66 -0
  235. package/src/contract/aci.ts +529 -0
  236. package/src/contract/ga.ts +178 -0
  237. package/src/contract/methods.ts +118 -0
  238. package/src/index.ts +51 -0
  239. package/src/oracle.ts +342 -0
  240. package/src/spend.ts +152 -0
  241. package/src/tx/builder/constants.ts +96 -0
  242. package/src/tx/builder/field-types.ts +111 -0
  243. package/src/tx/builder/helpers.ts +253 -0
  244. package/src/tx/builder/index.ts +394 -0
  245. package/src/tx/builder/schema.ts +771 -0
  246. package/src/tx/index.ts +199 -0
  247. package/src/tx/min-fee.ts +136 -0
  248. package/src/tx/validator.ts +226 -0
  249. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  250. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  251. package/src/typings/bip32-path/index.d.ts +33 -0
  252. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  253. package/src/utils/amount-formatter.ts +29 -41
  254. package/src/utils/autorest.ts +90 -0
  255. package/src/utils/bignumber.ts +9 -19
  256. package/src/utils/bytes.ts +15 -16
  257. package/src/utils/crypto.ts +217 -0
  258. package/src/utils/encoder.ts +98 -0
  259. package/src/utils/errors.ts +817 -0
  260. package/src/utils/hd-wallet.ts +134 -0
  261. package/src/utils/json-big.ts +26 -0
  262. package/src/utils/keystore.ts +179 -0
  263. package/src/utils/mptree.ts +26 -20
  264. package/src/utils/other.ts +28 -43
  265. package/src/utils/string.ts +8 -10
  266. package/CHANGELOG.md +0 -1603
  267. package/es/account/base.js +0 -169
  268. package/es/account/base.js.map +0 -1
  269. package/es/account/memory.js +0 -84
  270. package/es/account/memory.js.map +0 -1
  271. package/es/account/multiple.js +0 -178
  272. package/es/account/multiple.js.map +0 -1
  273. package/es/ae/aens.js +0 -408
  274. package/es/ae/aens.js.map +0 -1
  275. package/es/ae/aepp.js +0 -45
  276. package/es/ae/aepp.js.map +0 -1
  277. package/es/ae/contract.js +0 -312
  278. package/es/ae/contract.js.map +0 -1
  279. package/es/ae/index.js +0 -206
  280. package/es/ae/index.js.map +0 -1
  281. package/es/ae/oracle.js +0 -322
  282. package/es/ae/oracle.js.map +0 -1
  283. package/es/ae/universal.js +0 -45
  284. package/es/ae/universal.js.map +0 -1
  285. package/es/ae/wallet.js +0 -50
  286. package/es/ae/wallet.js.map +0 -1
  287. package/es/amount-formatter.d.ts +0 -58
  288. package/es/bignumber.d.ts +0 -24
  289. package/es/chain/index.js +0 -256
  290. package/es/chain/index.js.map +0 -1
  291. package/es/chain/node.js +0 -394
  292. package/es/chain/node.js.map +0 -1
  293. package/es/channel/handlers.js.map +0 -1
  294. package/es/channel/index.js +0 -980
  295. package/es/channel/index.js.map +0 -1
  296. package/es/channel/internal.js +0 -266
  297. package/es/channel/internal.js.map +0 -1
  298. package/es/contract/aci/helpers.js +0 -298
  299. package/es/contract/aci/helpers.js.map +0 -1
  300. package/es/contract/aci/index.js +0 -361
  301. package/es/contract/aci/index.js.map +0 -1
  302. package/es/contract/aci/transformation.js +0 -66
  303. package/es/contract/aci/transformation.js.map +0 -1
  304. package/es/contract/compiler.js +0 -244
  305. package/es/contract/compiler.js.map +0 -1
  306. package/es/contract/ga/helpers.js +0 -22
  307. package/es/contract/ga/helpers.js.map +0 -1
  308. package/es/contract/ga/index.js +0 -170
  309. package/es/contract/ga/index.js.map +0 -1
  310. package/es/contract/index.js +0 -162
  311. package/es/contract/index.js.map +0 -1
  312. package/es/crypto-ts.d.ts +0 -9
  313. package/es/index.js +0 -57
  314. package/es/index.js.map +0 -1
  315. package/es/node-pool/index.js +0 -187
  316. package/es/node-pool/index.js.map +0 -1
  317. package/es/node.js +0 -132
  318. package/es/node.js.map +0 -1
  319. package/es/other.d.ts +0 -31
  320. package/es/string.d.ts +0 -26
  321. package/es/tx/builder/helpers.js +0 -305
  322. package/es/tx/builder/helpers.js.map +0 -1
  323. package/es/tx/builder/index.js +0 -595
  324. package/es/tx/builder/index.js.map +0 -1
  325. package/es/tx/builder/schema.js +0 -814
  326. package/es/tx/builder/schema.js.map +0 -1
  327. package/es/tx/index.js +0 -300
  328. package/es/tx/index.js.map +0 -1
  329. package/es/tx/tx-object.js +0 -276
  330. package/es/tx/tx-object.js.map +0 -1
  331. package/es/tx/tx.js +0 -937
  332. package/es/tx/tx.js.map +0 -1
  333. package/es/tx/validator.js +0 -208
  334. package/es/tx/validator.js.map +0 -1
  335. package/es/typings/blakejs/index.d.js +0 -2
  336. package/es/typings/blakejs/index.d.js.map +0 -1
  337. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
  338. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  339. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
  340. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  341. package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
  342. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  343. package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
  344. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  345. package/es/utils/aepp-wallet-communication/helpers.js +0 -103
  346. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  347. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
  348. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  349. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
  350. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  351. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
  352. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  353. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  354. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  355. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
  356. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  357. package/es/utils/amount-formatter.js.map +0 -1
  358. package/es/utils/async-init.js +0 -67
  359. package/es/utils/async-init.js.map +0 -1
  360. package/es/utils/bignumber.js +0 -28
  361. package/es/utils/bignumber.js.map +0 -1
  362. package/es/utils/bytes.js.map +0 -1
  363. package/es/utils/crypto-ts.js.map +0 -1
  364. package/es/utils/crypto.js +0 -304
  365. package/es/utils/crypto.js.map +0 -1
  366. package/es/utils/hd-wallet.js +0 -112
  367. package/es/utils/hd-wallet.js.map +0 -1
  368. package/es/utils/json-big.js +0 -45
  369. package/es/utils/json-big.js.map +0 -1
  370. package/es/utils/keystore.js +0 -228
  371. package/es/utils/keystore.js.map +0 -1
  372. package/es/utils/mptree.js.map +0 -1
  373. package/es/utils/other.js +0 -43
  374. package/es/utils/other.js.map +0 -1
  375. package/es/utils/semver-satisfies.js.map +0 -1
  376. package/es/utils/string.js.map +0 -1
  377. package/es/utils/swagger.js +0 -132
  378. package/es/utils/swagger.js.map +0 -1
  379. package/src/account/base.js +0 -153
  380. package/src/account/memory.js +0 -78
  381. package/src/account/multiple.js +0 -154
  382. package/src/ae/aens.js +0 -366
  383. package/src/ae/aepp.js +0 -45
  384. package/src/ae/contract.js +0 -285
  385. package/src/ae/index.js +0 -167
  386. package/src/ae/oracle.js +0 -296
  387. package/src/ae/universal.js +0 -47
  388. package/src/ae/wallet.js +0 -50
  389. package/src/chain/index.js +0 -250
  390. package/src/chain/node.js +0 -293
  391. package/src/channel/index.js +0 -898
  392. package/src/channel/internal.js +0 -231
  393. package/src/contract/aci/index.js +0 -317
  394. package/src/contract/aci/transformation.js +0 -72
  395. package/src/contract/compiler.js +0 -195
  396. package/src/contract/ga/helpers.js +0 -17
  397. package/src/contract/ga/index.js +0 -147
  398. package/src/contract/index.js +0 -163
  399. package/src/index.js +0 -90
  400. package/src/node-pool/index.js +0 -171
  401. package/src/node.js +0 -118
  402. package/src/tx/builder/helpers.js +0 -325
  403. package/src/tx/builder/index.js +0 -460
  404. package/src/tx/builder/schema.js +0 -1211
  405. package/src/tx/index.js +0 -301
  406. package/src/tx/tx-object.js +0 -186
  407. package/src/tx/tx.js +0 -622
  408. package/src/tx/validator.js +0 -161
  409. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
  410. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
  411. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  412. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
  413. package/src/utils/aepp-wallet-communication/helpers.js +0 -70
  414. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
  415. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
  416. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
  417. package/src/utils/aepp-wallet-communication/schema.js +0 -108
  418. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
  419. package/src/utils/async-init.js +0 -41
  420. package/src/utils/crypto.js +0 -312
  421. package/src/utils/hd-wallet.js +0 -115
  422. package/src/utils/json-big.js +0 -26
  423. package/src/utils/keystore.js +0 -223
  424. package/src/utils/swagger.js +0 -133
@@ -0,0 +1,118 @@
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
+ * Contract module - routines to interact with the æternity contract
20
+ *
21
+ * High level documentation of the contracts are available at
22
+ * https://github.com/aeternity/protocol/tree/master/contracts and
23
+ */
24
+
25
+ import { AensName } from '../tx/builder/schema'
26
+ import { decode, produceNameId } from '../tx/builder/helpers'
27
+ import { concatBuffers } from '../utils/other'
28
+ import { EncodedData, EncodingType } from '../utils/encoder'
29
+ import AccountBase from '../account/Base'
30
+ import Node from '../Node'
31
+ export { default as getContractInstance } from './aci'
32
+
33
+ /**
34
+ * Utility method to create a delegate signature for a contract
35
+ * @param ids - The list of id's to prepend
36
+ * @param opt - Options
37
+ * @param opt.onNode - Node to use
38
+ * @param opt.onAccount - Account to use
39
+ * @returns Signature in hex representation
40
+ */
41
+ async function delegateSignatureCommon (
42
+ ids: Array<EncodedData<EncodingType>> = [],
43
+ { onAccount, onNode, ...opt }:
44
+ { onAccount: AccountBase, onNode: Node } & Parameters<AccountBase['sign']>[1]
45
+ ): Promise<string> {
46
+ const signature = await onAccount.sign(
47
+ concatBuffers([
48
+ Buffer.from((await onNode.getStatus()).networkId),
49
+ ...ids.map(e => decode(e))
50
+ ]),
51
+ opt
52
+ )
53
+ return Buffer.from(signature).toString('hex')
54
+ }
55
+
56
+ /**
57
+ * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to
58
+ * a contract.
59
+ * @param contractId - Contract Id
60
+ * @param opt - Options
61
+ * @param opt.name - The name
62
+ * @returns Signature for delegation
63
+ * @example
64
+ * ```js
65
+ * const aeSdk = new AeSdk({ ... })
66
+ * const contractId = 'ct_asd2ks...' // contract address
67
+ * const name = 'example.chain' // AENS name
68
+ * const onAccount = await aeSdk.address() // Sign with a specific account
69
+ * // Preclaim signature
70
+ * const preclaimSig = await aeSdk.createAensDelegationSignature(contractId, { onAccount: current })
71
+ * // Claim, transfer and revoke signature
72
+ * const aensDelegationSig = await contract.createAensDelegationSignature(
73
+ * contractId, { name, onAccount: current }
74
+ * )
75
+ * ```
76
+ */
77
+ export async function createAensDelegationSignature (
78
+ contractId: EncodedData<'ct'>,
79
+ opt: Parameters<AccountBase['address']>[0] & Parameters<typeof delegateSignatureCommon>[1] &
80
+ { name?: AensName }
81
+ ): Promise<string> {
82
+ return await delegateSignatureCommon(
83
+ [
84
+ await opt.onAccount.address(opt),
85
+ ...opt.name != null ? [produceNameId(opt.name)] : [],
86
+ contractId
87
+ ],
88
+ opt
89
+ )
90
+ }
91
+
92
+ /**
93
+ * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.
94
+ * @param contractId - Contract Id
95
+ * @param opt - Options
96
+ * @param opt.queryId - Oracle Query Id
97
+ * @returns Signature for delegation
98
+ * @example
99
+ * ```js
100
+ * const aeSdk = new AeSdk({ ... })
101
+ * const contractId = 'ct_asd2ks...' // contract address
102
+ * const queryId = 'oq_...' // Oracle Query Id
103
+ * const onAccount = await aeSdk.address() // Sign with a specific account
104
+ * // Oracle register and extend signature
105
+ * const oracleDelegationSig = await aeSdk.createOracleDelegationSignature(contractId)
106
+ * // Oracle respond signature
107
+ * const respondSig = await aeSdk.createOracleDelegationSignature(contractId, { queryId })
108
+ * ```
109
+ */
110
+ export async function createOracleDelegationSignature (
111
+ contractId: EncodedData<'ct'>,
112
+ opt: Parameters<AccountBase['address']>[0] & Parameters<typeof delegateSignatureCommon>[1] &
113
+ { queryId?: EncodedData<'oq'> }
114
+ ): Promise<string> {
115
+ return await delegateSignatureCommon(
116
+ [opt.queryId ?? await opt.onAccount.address(opt), contractId], opt
117
+ )
118
+ }
package/src/index.ts ADDED
@@ -0,0 +1,51 @@
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
+ export * from './chain'
19
+ export * from './utils/crypto'
20
+ export * from './utils/keystore'
21
+ export * from './utils/bytes'
22
+ export * from './tx'
23
+ export * from './tx/builder'
24
+ export * from './tx/builder/helpers'
25
+ export * from './tx/builder/schema'
26
+ export * from './utils/amount-formatter'
27
+ export * from './utils/hd-wallet'
28
+ export * from './aens'
29
+ export * from './contract/methods'
30
+ export * from './oracle'
31
+ export * from './spend'
32
+ export * from './contract/ga'
33
+
34
+ export { default as AeSdkBase } from './AeSdkBase'
35
+ export { default as AeSdk } from './AeSdk'
36
+ export { default as AeSdkAepp } from './AeSdkAepp'
37
+ export { default as AeSdkWallet } from './AeSdkWallet'
38
+ export { default as Node } from './Node'
39
+ export { default as verifyTransaction } from './tx/validator'
40
+ export { default as calculateMinFee } from './tx/min-fee'
41
+ export { default as AccountBase } from './account/Base'
42
+ export { default as MemoryAccount } from './account/Memory'
43
+ export { default as Compiler } from './contract/Compiler'
44
+ export { default as Channel } from './channel'
45
+
46
+ export { default as connectionProxy } from './aepp-wallet-communication/connection-proxy'
47
+ export * from './aepp-wallet-communication/schema'
48
+ export { default as walletDetector } from './aepp-wallet-communication/wallet-detector'
49
+ export { default as BrowserRuntimeConnection } from './aepp-wallet-communication/connection/BrowserRuntime'
50
+ export { default as BrowserWindowMessageConnection } from './aepp-wallet-communication/connection/BrowserWindowMessage'
51
+ export * from './utils/errors'
package/src/oracle.ts ADDED
@@ -0,0 +1,342 @@
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 { send, SendOptions } from './spend'
27
+ import { mapObject, pause } from './utils/other'
28
+ import { oracleQueryId, decode, encode } from './tx/builder/helpers'
29
+ import { unpackTx } from './tx/builder'
30
+ import {
31
+ ORACLE_TTL,
32
+ ORACLE_TTL_TYPES,
33
+ QUERY_FEE,
34
+ QUERY_TTL,
35
+ RESPONSE_TTL,
36
+ TX_TYPE
37
+ } from './tx/builder/schema'
38
+ import { RequestTimedOutError } from './utils/errors'
39
+ import { EncodedData } from './utils/encoder'
40
+ import { _getPollInterval } from './chain'
41
+ import { _buildTx, BuildTxOptions } from './tx'
42
+ import Node from './Node'
43
+ import BigNumber from 'bignumber.js'
44
+ import AccountBase from './account/Base'
45
+
46
+ type OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries']
47
+
48
+ /**
49
+ * Constructor for Oracle Object (helper object for using Oracle)
50
+ * @param oracleId - Oracle public key
51
+ * @param options - Options
52
+ * @returns Oracle object
53
+ */
54
+ export async function getOracleObject (
55
+ oracleId: EncodedData<'ok'>, options: { onNode: Node, onAccount: AccountBase }
56
+ ): Promise<GetOracleObjectReturnType> {
57
+ return {
58
+ ...await options.onNode.getOracleByPubkey(oracleId),
59
+ queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,
60
+ ...mapObject<Function, Function>(
61
+ {
62
+ pollQueries: pollForQueries,
63
+ postQuery: postQueryToOracle,
64
+ respondToQuery,
65
+ extendOracle: extendOracleTtl,
66
+ getQuery: getQueryObject
67
+ },
68
+ ([name, handler]) => [
69
+ name,
70
+ function (...args: any) {
71
+ const lastArg = args[args.length - 1]
72
+ if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {
73
+ Object.assign(lastArg, { ...options, ...lastArg })
74
+ } else args.push(options)
75
+ return handler(oracleId, ...args)
76
+ }
77
+ ])
78
+ } as any
79
+ }
80
+
81
+ interface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {
82
+ id: EncodedData<'ok'>
83
+ queries: OracleQueries
84
+ // TODO: replace getOracleObject with a class
85
+ pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>
86
+ postQuery: Function
87
+ respondToQuery: Function
88
+ extendOracle: Function
89
+ getQuery: Function
90
+ }
91
+
92
+ /**
93
+ * Poll for oracle queries
94
+ * @param oracleId - Oracle public key
95
+ * @param onQuery - OnQuery callback
96
+ * @param options - Options object
97
+ * @param options.interval - Poll interval(default: 5000)
98
+ * @param options.onNode - Node to use
99
+ * @returns Callback to stop polling function
100
+ */
101
+ export function pollForQueries (
102
+ oracleId: EncodedData<'ok'>,
103
+ onQuery: (queries: OracleQueries) => void,
104
+ { interval, onNode, ...options }: { interval?: number, onNode: Node }
105
+ & Parameters<typeof _getPollInterval>[1]
106
+ ): () => void {
107
+ interval ??= _getPollInterval('microblock', options)
108
+ const knownQueryIds = new Set()
109
+ const checkNewQueries = async (): Promise<void> => {
110
+ const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])
111
+ .filter(({ id }) => !knownQueryIds.has(id))
112
+ queries.forEach(({ id }) => knownQueryIds.add(id))
113
+ if (queries.length > 0) onQuery(queries)
114
+ }
115
+
116
+ let stopped = false;
117
+
118
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
119
+ (async () => {
120
+ while (!stopped) { // eslint-disable-line no-unmodified-loop-condition
121
+ // TODO: allow to handle this error somehow
122
+ await checkNewQueries().catch(console.error)
123
+ await pause(interval)
124
+ }
125
+ })()
126
+ return () => { stopped = true }
127
+ }
128
+
129
+ /**
130
+ * Constructor for OracleQuery Object (helper object for using OracleQuery)
131
+ * @param oracleId - Oracle public key
132
+ * @param queryId - Oracle Query id
133
+ * @param options - Options
134
+ * @returns OracleQuery object
135
+ */
136
+ export async function getQueryObject (
137
+ oracleId: EncodedData<'ok'>,
138
+ queryId: EncodedData<'oq'>,
139
+ options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2]
140
+ ): Promise<GetQueryObjectReturnType> {
141
+ const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)
142
+ return {
143
+ ...record,
144
+ decodedQuery: decode(record.query as EncodedData<'oq'>).toString(),
145
+ decodedResponse: decode(record.response as EncodedData<'or'>).toString(),
146
+ respond: async (response, opt) =>
147
+ await respondToQuery(oracleId, queryId, response, { ...options, ...opt }),
148
+ pollForResponse: async (opt) =>
149
+ await pollForQueryResponse(oracleId, queryId, { ...options, ...opt })
150
+ }
151
+ }
152
+
153
+ interface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {
154
+ decodedQuery: string
155
+ decodedResponse: string
156
+ respond: (response: string, options?: Parameters<typeof respondToQuery>[3]) =>
157
+ ReturnType<typeof respondToQuery>
158
+ pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>
159
+ ReturnType<typeof pollForQueryResponse>
160
+ }
161
+
162
+ /**
163
+ * Poll for oracle query response
164
+ * @param oracleId - Oracle public key
165
+ * @param queryId - Oracle Query id
166
+ * @param options - Options object
167
+ * @param options.attempts - Poll attempts
168
+ * @param options.interval - Poll interval
169
+ * @param options.onNode - Node to use
170
+ * @returns OracleQuery object
171
+ */
172
+ export async function pollForQueryResponse (
173
+ oracleId: EncodedData<'ok'>,
174
+ queryId: EncodedData<'oq'>,
175
+ { attempts = 20, interval, onNode, ...options }:
176
+ { attempts?: number, interval?: number, onNode: Node } & Parameters<typeof _getPollInterval>[1]
177
+ ): Promise<string> {
178
+ interval ??= _getPollInterval('microblock', options)
179
+ for (let i = 0; i < attempts; i++) {
180
+ if (i > 0) await pause(interval)
181
+ const { response } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)
182
+ const responseBuffer = decode(response as EncodedData<'or'>)
183
+ if (responseBuffer.length > 0) return responseBuffer.toString()
184
+ }
185
+ throw new RequestTimedOutError((attempts - 1) * interval)
186
+ }
187
+
188
+ /**
189
+ * Register oracle
190
+ * @param queryFormat - Format of query
191
+ * @param responseFormat - Format of query response
192
+ * @param options - Options
193
+ * @param options.queryFee - Oracle query Fee
194
+ * @param options - Options object
195
+ * @param options.abiVersion - Always 0 (do not use virtual machine)
196
+ * @param options.fee - Transaction fee
197
+ * @param options.ttl - Transaction time to leave
198
+ * @returns Oracle object
199
+ */
200
+ export async function registerOracle (
201
+ queryFormat: string, responseFormat: string, options: RegisterOracleOptions
202
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
203
+ const accountId = await options.onAccount.address(options)
204
+ const oracleRegisterTx = await _buildTx(TX_TYPE.oracleRegister, {
205
+ queryFee: QUERY_FEE,
206
+ oracleTtlValue: ORACLE_TTL.value,
207
+ oracleTtlType: ORACLE_TTL.type,
208
+ ...options,
209
+ accountId,
210
+ queryFormat,
211
+ responseFormat
212
+ })
213
+ return {
214
+ ...await send(oracleRegisterTx, options),
215
+ ...await getOracleObject(encode(decode(accountId), 'ok'), options)
216
+ }
217
+ }
218
+
219
+ type RegisterOracleOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
220
+ & BuildTxOptions<TX_TYPE.oracleRegister, 'accountId' | 'queryFormat' | 'responseFormat' | 'queryFee' | 'oracleTtlType' | 'oracleTtlValue'>
221
+ & {
222
+ queryFee?: number | string | BigNumber
223
+ oracleTtlType?: ORACLE_TTL_TYPES
224
+ oracleTtlValue?: number
225
+ }
226
+ interface RegisterOracleOptions extends RegisterOracleOptionsType {}
227
+
228
+ /**
229
+ * Post query to oracle
230
+ * @param oracleId - Oracle public key
231
+ * @param query - Oracle query object
232
+ * @param options - Options object
233
+ * @param options.queryTtl - queryTtl Oracle query time to leave
234
+ * @param options.responseTtl - queryFee Oracle query response time to leave
235
+ * @param options.queryFee - queryFee Oracle query fee
236
+ * @param options.fee - fee Transaction fee
237
+ * @param options.ttl - Transaction time to leave
238
+ * @returns Query object
239
+ */
240
+ export async function postQueryToOracle (oracleId: EncodedData<'ok'>,
241
+ query: string, options: PostQueryToOracleOptions
242
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getQueryObject>>> {
243
+ options.queryFee ??= (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString()
244
+ const senderId = await options.onAccount.address(options)
245
+
246
+ const oracleQueryTx = await _buildTx(TX_TYPE.oracleQuery, {
247
+ queryTtlType: QUERY_TTL.type,
248
+ queryTtlValue: QUERY_TTL.value,
249
+ responseTtlType: RESPONSE_TTL.type,
250
+ responseTtlValue: RESPONSE_TTL.value,
251
+ ...options,
252
+ oracleId,
253
+ senderId,
254
+ query
255
+ })
256
+ const nonce = unpackTx(oracleQueryTx, TX_TYPE.oracleQuery).tx.nonce
257
+ const queryId = oracleQueryId(senderId, nonce, oracleId)
258
+ return {
259
+ ...await send(oracleQueryTx, options),
260
+ ...await getQueryObject(oracleId, queryId, options)
261
+ }
262
+ }
263
+
264
+ type PostQueryToOracleOptionsType = Parameters<typeof send>[1]
265
+ & Parameters<typeof getQueryObject>[2]
266
+ & BuildTxOptions<TX_TYPE.oracleQuery, 'oracleId' | 'senderId' | 'query' | 'queryTtlType' | 'queryTtlValue' | 'responseTtlType' | 'responseTtlValue'>
267
+ & {
268
+ queryTtlType?: ORACLE_TTL_TYPES
269
+ queryTtlValue?: number
270
+ responseTtlType?: ORACLE_TTL_TYPES
271
+ responseTtlValue?: number
272
+ }
273
+ interface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}
274
+
275
+ /**
276
+ * Extend oracle ttl
277
+ * @param oracleId - Oracle public key
278
+ * @param options - Options object
279
+ * @param options.fee - fee Transaction fee
280
+ * @param options.ttl - Transaction time to leave
281
+ * @param options.oracleTtlType - Oracle time to leave for extend
282
+ * @param options.oracleTtlValue - Oracle time to leave for extend
283
+ * @returns Oracle object
284
+ */
285
+ export async function extendOracleTtl (
286
+ oracleId: EncodedData<'ok'>,
287
+ options: ExtendOracleTtlOptions
288
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
289
+ const oracleExtendTx = await _buildTx(TX_TYPE.oracleExtend, {
290
+ oracleTtlType: ORACLE_TTL.type,
291
+ oracleTtlValue: ORACLE_TTL.value,
292
+ ...options,
293
+ callerId: await options.onAccount.address(options),
294
+ oracleId
295
+ })
296
+ return {
297
+ ...await send(oracleExtendTx, options),
298
+ ...await getOracleObject(oracleId, options)
299
+ }
300
+ }
301
+
302
+ type ExtendOracleTtlOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
303
+ & BuildTxOptions<TX_TYPE.oracleExtend, 'oracleTtlType' | 'oracleTtlValue' | 'callerId' | 'oracleId'>
304
+ & { oracleTtlType?: ORACLE_TTL_TYPES, oracleTtlValue?: number }
305
+ interface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}
306
+
307
+ /**
308
+ * Extend oracle ttl
309
+ * @param oracleId - Oracle public key
310
+ * @param queryId - Oracle query id
311
+ * @param response - Oracle query response
312
+ * @param options - Options object
313
+ * @param options.responseTtl - responseTtl Query response time to leave
314
+ * @param options.fee - Transaction fee
315
+ * @param options.ttl - Transaction time to leave
316
+ * @returns Oracle object
317
+ */
318
+ export async function respondToQuery (
319
+ oracleId: EncodedData<'ok'>,
320
+ queryId: EncodedData<'oq'>,
321
+ response: string,
322
+ options: RespondToQueryOptions
323
+ ): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {
324
+ const oracleRespondTx = await _buildTx(TX_TYPE.oracleResponse, {
325
+ responseTtlType: RESPONSE_TTL.type,
326
+ responseTtlValue: RESPONSE_TTL.value,
327
+ ...options,
328
+ callerId: await options.onAccount.address(options),
329
+ oracleId,
330
+ queryId,
331
+ response
332
+ })
333
+ return {
334
+ ...await send(oracleRespondTx, options),
335
+ ...await getOracleObject(oracleId, options)
336
+ }
337
+ }
338
+
339
+ type RespondToQueryOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]
340
+ & BuildTxOptions<TX_TYPE.oracleResponse, 'callerId' | 'oracleId' | 'queryId' | 'response' | 'responseTtlType' | 'responseTtlValue'>
341
+ & { responseTtlType?: ORACLE_TTL_TYPES, responseTtlValue?: number }
342
+ interface RespondToQueryOptions extends RespondToQueryOptionsType {}
package/src/spend.ts ADDED
@@ -0,0 +1,152 @@
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 { sendTransaction, getAccount, getBalance, resolveName } from './chain'
18
+ import { _buildTx, BuildTxOptions } from './tx'
19
+ import { buildTxHash, unpackTx } from './tx/builder'
20
+ import BigNumber from 'bignumber.js'
21
+ import { ArgumentError } from './utils/errors'
22
+ import { EncodedData } from './utils/encoder'
23
+ import { createMetaTx } from './contract/ga'
24
+ import { TX_TYPE, AensName } from './tx/builder/schema'
25
+ import AccountBase from './account/Base'
26
+
27
+ /**
28
+ * Sign and post a transaction to the chain
29
+ * @param tx - Transaction
30
+ * @param options - Options
31
+ * @param options.verify - Verify transaction before broadcast, throw error if not
32
+ * valid
33
+ * @returns Transaction
34
+ */
35
+ export async function send (tx: EncodedData<'tx'>, options: SendOptions): Promise<SendReturnType> {
36
+ const { contractId, authFun = undefined } = options.innerTx === true
37
+ ? { contractId: null }
38
+ : await getAccount(await options.onAccount.address(options), options)
39
+
40
+ const signed = contractId != null
41
+ // TODO: not required arguments become required depending on account type, can ga be extracted?
42
+ ? await signUsingGA(tx, { authData: {}, ...options, authFun: authFun as string })
43
+ : await options.onAccount.signTransaction(tx, options)
44
+
45
+ return options.innerTx === true
46
+ ? { hash: buildTxHash(signed), rawTx: signed }
47
+ : await sendTransaction(signed, options)
48
+ }
49
+
50
+ type SendOptionsType = Parameters<AccountBase['signTransaction']>[1] & Parameters<typeof sendTransaction>[1]
51
+ & Partial<Omit<Parameters<typeof signUsingGA>[1], 'onAccount' | 'onCompiler'>>
52
+ & Pick<Parameters<typeof signUsingGA>[1], 'onAccount' | 'onCompiler'>
53
+ export interface SendOptions extends SendOptionsType {}
54
+ interface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {}
55
+
56
+ export async function signUsingGA (
57
+ tx: EncodedData<'tx'>,
58
+ { authData, authFun, ...options }: {
59
+ authData: Parameters<typeof createMetaTx>[1]
60
+ authFun: Parameters<typeof createMetaTx>[2]
61
+ } & Parameters<typeof createMetaTx>[3]
62
+ ): Promise<EncodedData<'tx'>> {
63
+ return await createMetaTx(tx, authData, authFun, options)
64
+ }
65
+
66
+ /**
67
+ * Send coins to another account
68
+ * @param amount - Amount to spend
69
+ * @param recipientIdOrName - Address or name of recipient account
70
+ * @param options - Options
71
+ * @returns Transaction
72
+ */
73
+ export async function spend (
74
+ amount: number | string,
75
+ recipientIdOrName: EncodedData<'ak'> | AensName,
76
+ options: SpendOptions
77
+ ): ReturnType<typeof send> {
78
+ return await send(
79
+ await _buildTx(TX_TYPE.spend, {
80
+ ...options,
81
+ senderId: await options.onAccount.address(options),
82
+ recipientId: await resolveName(recipientIdOrName, 'account_pubkey', options),
83
+ amount
84
+ }),
85
+ options
86
+ )
87
+ }
88
+
89
+ type SpendOptionsType = BuildTxOptions<TX_TYPE.spend, 'senderId' | 'recipientId' | 'amount'>
90
+ & Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions
91
+ interface SpendOptions extends SpendOptionsType {}
92
+
93
+ // TODO: Rename to spendFraction
94
+ /**
95
+ * Send a fraction of coin balance to another account
96
+ * @param fraction - Fraction of balance to spend (between 0 and 1)
97
+ * @param recipientIdOrName - Address or name of recipient account
98
+ * @param options - Options
99
+ * @returns Transaction
100
+ */
101
+ export async function transferFunds (
102
+ fraction: number | string,
103
+ recipientIdOrName: AensName | EncodedData<'ak'>,
104
+ options: TransferFundsOptions
105
+ ): ReturnType<typeof send> {
106
+ if (fraction < 0 || fraction > 1) {
107
+ throw new ArgumentError('fraction', 'a number between 0 and 1', fraction)
108
+ }
109
+ const recipientId = await resolveName<'ak'>(recipientIdOrName, 'account_pubkey', options)
110
+ const senderId = await options.onAccount.address(options)
111
+ const balance = new BigNumber(
112
+ await getBalance.bind(options.onAccount)(senderId, options)
113
+ )
114
+ const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)
115
+ const { tx: { fee } } = unpackTx(
116
+ await _buildTx(TX_TYPE.spend, { ...options, senderId, recipientId, amount: desiredAmount }),
117
+ TX_TYPE.spend
118
+ )
119
+ // Reducing of the amount may reduce transaction fee, so this is not completely accurate
120
+ const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount
121
+ return await send(
122
+ await _buildTx(TX_TYPE.spend, { ...options, senderId, recipientId, amount }),
123
+ options
124
+ )
125
+ }
126
+
127
+ type TransferFundsOptionsType = BuildTxOptions<TX_TYPE.spend, 'senderId' | 'recipientId' | 'amount'>
128
+ & Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions
129
+ interface TransferFundsOptions extends TransferFundsOptionsType {}
130
+
131
+ /**
132
+ * Submit transaction of another account paying for it (fee and gas)
133
+ * @param transaction - tx_<base64>-encoded transaction
134
+ * @param options - Options
135
+ * @returns Object Transaction
136
+ */
137
+ export async function payForTransaction (
138
+ transaction: EncodedData<'tx'>, options: PayForTransactionOptions
139
+ ): ReturnType<typeof send> {
140
+ return await send(
141
+ await _buildTx(
142
+ TX_TYPE.payingFor,
143
+ { ...options, payerId: await options.onAccount.address(options), tx: transaction }
144
+ ),
145
+ options
146
+ )
147
+ }
148
+
149
+ interface PayForTransactionOptions extends
150
+ BuildTxOptions<TX_TYPE.payingFor, 'payerId' | 'tx'>, SendOptions {
151
+ onAccount: AccountBase
152
+ }