@aeternity/aepp-sdk 11.0.1 → 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 (376) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
@@ -0,0 +1,131 @@
1
+ /// <reference types="node" />
2
+ import BigNumber from 'bignumber.js';
3
+ import { salt } from '../../utils/crypto';
4
+ import { encode, decode, EncodedData } from '../../utils/encoder';
5
+ import { POINTER_KEY_BY_PREFIX, AensName } from './constants';
6
+ /**
7
+ * JavaScript-based Transaction builder helper function's
8
+ */
9
+ export declare const createSalt: typeof salt;
10
+ export { encode, decode };
11
+ export interface Pointer {
12
+ key: string;
13
+ id: string;
14
+ }
15
+ /**
16
+ * Build a contract public key
17
+ * @param ownerId - The public key of the owner account
18
+ * @param nonce - the nonce of the transaction
19
+ * @returns Contract public key
20
+ */
21
+ export declare function buildContractId(ownerId: EncodedData<'ak'>, nonce: number | BigNumber): EncodedData<'ct'>;
22
+ /**
23
+ * Build a oracle query id
24
+ * @param senderId - The public key of the sender account
25
+ * @param nonce - the nonce of the transaction
26
+ * @param oracleId - The oracle public key
27
+ * @returns Contract public key
28
+ */
29
+ export declare function oracleQueryId(senderId: EncodedData<'ak'>, nonce: number | BigNumber | string, oracleId: EncodedData<'ok'>): EncodedData<'oq'>;
30
+ /**
31
+ * Format the salt into a 64-byte hex string
32
+ * @param salt - Random number
33
+ * @returns Zero-padded hex string of salt
34
+ */
35
+ export declare function formatSalt(salt: number): Buffer;
36
+ /**
37
+ * Encode an AENS name
38
+ *
39
+ * @param name - Name to encode
40
+ * @returns `nm_` prefixed encoded AENS name
41
+ */
42
+ export declare function produceNameId(name: AensName): EncodedData<'nm'>;
43
+ /**
44
+ * Generate the commitment hash by hashing the formatted salt and
45
+ * name, base 58 encoding the result and prepending 'cm_'
46
+ *
47
+ * @param name - Name to be registered
48
+ * @param salt - Random salt
49
+ * @returns Commitment hash
50
+ */
51
+ export declare function commitmentHash(name: AensName, salt?: number): EncodedData<'cm'>;
52
+ /**
53
+ * Utility function to create and _id type
54
+ * @param hashId - Encoded hash
55
+ * @returns Buffer Buffer with ID tag and decoded HASh
56
+ */
57
+ export declare function writeId(hashId: string): Buffer;
58
+ /**
59
+ * Utility function to read and _id type
60
+ * @param buf - Data
61
+ * @returns Encoided hash string with prefix
62
+ */
63
+ export declare function readId(buf: Buffer): string;
64
+ /**
65
+ * Utility function to convert int to bytes
66
+ * @param val - Value
67
+ * @returns Buffer Buffer from number(BigEndian)
68
+ */
69
+ export declare function writeInt(val: number | string | BigNumber): Buffer;
70
+ /**
71
+ * Utility function to convert bytes to int
72
+ * @param buf - Value
73
+ * @returns Buffer Buffer from number(BigEndian)
74
+ */
75
+ export declare function readInt(buf?: Buffer): string;
76
+ /**
77
+ * Helper function to build pointers for name update TX
78
+ * @param pointers - Array of pointers
79
+ * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
80
+ * @returns Serialized pointers array
81
+ */
82
+ export declare function buildPointers(pointers: Pointer[]): Buffer[][];
83
+ /**
84
+ * Helper function to read pointers from name update TX
85
+ * @param pointers - Array of pointers
86
+ * @returns Deserialize pointer array
87
+ */
88
+ export declare function readPointers(pointers: Array<[key: string, id: Buffer]>): Pointer[];
89
+ /**
90
+ * Is AENS name valid
91
+ * @param name - AENS name
92
+ */
93
+ export declare function isNameValid(name: string): name is AensName;
94
+ /**
95
+ * @param identifier - account/oracle/contract address, or channel
96
+ * @returns default AENS pointer key
97
+ */
98
+ export declare function getDefaultPointerKey(identifier: EncodedData<keyof typeof POINTER_KEY_BY_PREFIX>): POINTER_KEY_BY_PREFIX;
99
+ /**
100
+ * Get the minimum AENS name fee
101
+ *
102
+ * @param name - the AENS name to get the fee for
103
+ * @returns the minimum fee for the AENS name auction
104
+ */
105
+ export declare function getMinimumNameFee(name: AensName): BigNumber;
106
+ /**
107
+ * Compute bid fee for AENS auction
108
+ *
109
+ * @param name - the AENS name to get the fee for
110
+ * @param options - Options
111
+ * @param options.startFee - Auction start fee
112
+ * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
113
+ * @returns Bid fee
114
+ */
115
+ export declare function computeBidFee(name: AensName, { startFee, increment }?: {
116
+ startFee?: number | string | BigNumber;
117
+ increment?: number;
118
+ }): BigNumber;
119
+ /**
120
+ * Compute auction end height
121
+ *
122
+ * @param name - Name to compute auction end for
123
+ * @param claimHeight - Auction starting height
124
+ * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
125
+ * @returns Auction end height
126
+ */
127
+ export declare function computeAuctionEndBlock(name: AensName, claimHeight: number): number;
128
+ /**
129
+ * Is name accept going to auction
130
+ */
131
+ export declare function isAuctionName(name: AensName): boolean;
@@ -3,66 +3,53 @@ const {
3
3
  Buffer: _Buffer
4
4
  } = _buffer;
5
5
  import BigNumber from 'bignumber.js';
6
- import _bs from 'bs58';
7
- const {
8
- encode: bs58Encode,
9
- decode: bs58Decode
10
- } = _bs;
11
6
  import { hash, salt } from "../../utils/crypto.mjs";
12
7
  import { encode, decode } from "../../utils/encoder.mjs";
13
8
  import { toBytes } from "../../utils/bytes.mjs";
14
- import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from "./constants.mjs";
9
+ import { concatBuffers } from "../../utils/other.mjs";
10
+ import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUT_BLOCKS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from "./constants.mjs";
15
11
  import { ceil } from "../../utils/bignumber.mjs";
16
- import { TagNotFoundError, PrefixNotFoundError, InvalidNameError, IllegalBidFeeError, NoDefaultAensPointerError, ArgumentError } from "../../utils/errors.mjs";
12
+ import { TagNotFoundError, PrefixNotFoundError, IllegalBidFeeError, ArgumentError } from "../../utils/errors.mjs";
17
13
  /**
18
14
  * JavaScript-based Transaction builder helper function's
19
- * @module @aeternity/aepp-sdk/es/tx/builder/helpers
20
- * @export TxBuilderHelper
21
- * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'
22
15
  */
23
16
 
24
17
  export const createSalt = salt;
25
18
  export { encode, decode };
19
+
26
20
  /**
27
21
  * Build a contract public key
28
- * @function
29
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
30
- * @param {string} ownerId The public key of the owner account
31
- * @param {number} nonce the nonce of the transaction
32
- * @return {string} Contract public key
22
+ * @param ownerId - The public key of the owner account
23
+ * @param nonce - the nonce of the transaction
24
+ * @returns Contract public key
33
25
  */
34
-
35
26
  export function buildContractId(ownerId, nonce) {
36
- const ownerIdAndNonce = _Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)]);
27
+ const ownerIdAndNonce = _Buffer.from([...decode(ownerId), ...toBytes(nonce)]);
37
28
 
38
29
  const b2bHash = hash(ownerIdAndNonce);
39
30
  return encode(b2bHash, 'ct');
40
31
  }
41
32
  /**
42
33
  * Build a oracle query id
43
- * @function
44
- * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
45
- * @param {String} senderId The public key of the sender account
46
- * @param {Number} nonce the nonce of the transaction
47
- * @param {Number} oracleId The oracle public key
48
- * @return {string} Contract public key
34
+ * @param senderId - The public key of the sender account
35
+ * @param nonce - the nonce of the transaction
36
+ * @param oracleId - The oracle public key
37
+ * @returns Contract public key
49
38
  */
50
39
 
51
40
  export function oracleQueryId(senderId, nonce, oracleId) {
52
41
  function _int32(val) {
53
42
  const nonceBE = toBytes(val, true);
54
- return _Buffer.concat([_Buffer.alloc(32 - nonceBE.length), nonceBE]);
43
+ return concatBuffers([_Buffer.alloc(32 - nonceBE.length), nonceBE]);
55
44
  }
56
45
 
57
- const b2bHash = hash(_Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]));
46
+ const b2bHash = hash(_Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]));
58
47
  return encode(b2bHash, 'oq');
59
48
  }
60
49
  /**
61
50
  * Format the salt into a 64-byte hex string
62
- * @function
63
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
64
- * @param {number} salt
65
- * @return {string} Zero-padded hex string of salt
51
+ * @param salt - Random number
52
+ * @returns Zero-padded hex string of salt
66
53
  */
67
54
 
68
55
  export function formatSalt(salt) {
@@ -70,108 +57,57 @@ export function formatSalt(salt) {
70
57
  }
71
58
  /**
72
59
  * Encode an AENS name
73
- * @function
74
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
75
- * @param {String} name Name to encode
76
- * @return {String} `nm_` prefixed encoded AENS name
60
+ *
61
+ * @param name - Name to encode
62
+ * @returns `nm_` prefixed encoded AENS name
77
63
  */
78
64
 
79
65
  export function produceNameId(name) {
80
- ensureNameValid(name);
81
66
  return encode(hash(name.toLowerCase()), 'nm');
82
67
  }
83
68
  /**
84
69
  * Generate the commitment hash by hashing the formatted salt and
85
70
  * name, base 58 encoding the result and prepending 'cm_'
86
71
  *
87
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
88
- * @function commitmentHash
89
- * @category async
90
- * @rtype (name: String, salt?: String) => hash: Promise[String]
91
- * @param {String} name - Name to be registered
92
- * @param {Number} salt Random salt
93
- * @return {String} Commitment hash
72
+ * @param name - Name to be registered
73
+ * @param salt - Random salt
74
+ * @returns Commitment hash
94
75
  */
95
76
 
96
77
  export function commitmentHash(name) {
97
78
  let salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSalt();
98
- ensureNameValid(name);
99
- return encode(hash(_Buffer.concat([_Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm');
100
- } // based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md
101
-
102
- const base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx'];
103
- const base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']; // TODO: add all types with a fixed length
104
-
105
- const typesLength = {
106
- ak: 32,
107
- ct: 32,
108
- ok: 32
109
- };
110
-
111
- function ensureValidLength(data, type) {
112
- if (!typesLength[type]) return;
113
- if (data.length === typesLength[type]) return;
114
- throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`);
115
- }
116
-
117
- const getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4);
118
-
119
- const addChecksum = input => {
120
- const payload = _Buffer.from(input);
121
-
122
- return _Buffer.concat([payload, getChecksum(payload)]);
123
- };
124
-
125
- function getPayload(buffer) {
126
- const payload = buffer.slice(0, -4);
127
- if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError();
128
- return payload;
79
+ return encode(hash(concatBuffers([_Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm');
129
80
  }
130
-
131
- const base64 = {
132
- encode: buffer => addChecksum(buffer).toString('base64'),
133
- decode: string => getPayload(_Buffer.from(string, 'base64'))
134
- };
135
- const base58 = {
136
- encode: buffer => bs58.encode(addChecksum(buffer)),
137
- decode: string => getPayload(bs58.decode(string))
138
- };
139
81
  /**
140
82
  * Utility function to create and _id type
141
- * @function
142
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
143
- * @param {string} hashId Encoded hash
144
- * @return {Buffer} Buffer Buffer with ID tag and decoded HASh
83
+ * @param hashId - Encoded hash
84
+ * @returns Buffer Buffer with ID tag and decoded HASh
145
85
  */
146
86
 
147
87
  export function writeId(hashId) {
148
88
  if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId);
149
89
  const prefix = hashId.slice(0, 2);
150
90
  const idTag = PREFIX_ID_TAG[prefix];
151
- if (!idTag) throw new TagNotFoundError(prefix);
152
- return _Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)]);
91
+ if (idTag == null) throw new TagNotFoundError(prefix);
92
+ return _Buffer.from([...toBytes(idTag), ...decode(hashId)]);
153
93
  }
154
94
  /**
155
95
  * Utility function to read and _id type
156
- * @function
157
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
158
- * @param {Buffer} buf Data
159
- * @return {String} Encoided hash string with prefix
96
+ * @param buf - Data
97
+ * @returns Encoided hash string with prefix
160
98
  */
161
99
 
162
100
  export function readId(buf) {
163
101
  const tag = _Buffer.from(buf).readUIntBE(0, 1);
164
102
 
165
103
  const prefix = ID_TAG_PREFIX[tag];
166
- if (!prefix) throw new PrefixNotFoundError(tag);
104
+ if (prefix == null) throw new PrefixNotFoundError(tag);
167
105
  return encode(buf.slice(1, buf.length), prefix);
168
106
  }
169
107
  /**
170
108
  * Utility function to convert int to bytes
171
- * @function
172
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
173
- * @param {Number|String|BigNumber} val Value
174
- * @return {Buffer} Buffer Buffer from number(BigEndian)
109
+ * @param val - Value
110
+ * @returns Buffer Buffer from number(BigEndian)
175
111
  */
176
112
 
177
113
  export function writeInt(val) {
@@ -179,10 +115,8 @@ export function writeInt(val) {
179
115
  }
180
116
  /**
181
117
  * Utility function to convert bytes to int
182
- * @function
183
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
184
- * @param {Buffer} buf Value
185
- * @return {String} Buffer Buffer from number(BigEndian)
118
+ * @param buf - Value
119
+ * @returns Buffer Buffer from number(BigEndian)
186
120
  */
187
121
 
188
122
  export function readInt() {
@@ -191,11 +125,9 @@ export function readInt() {
191
125
  }
192
126
  /**
193
127
  * Helper function to build pointers for name update TX
194
- * @function
195
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
196
- * @param {Array} pointers - Array of pointers
197
- * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
198
- * @return {Array} Serialized pointers array
128
+ * @param pointers - Array of pointers
129
+ * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
130
+ * @returns Serialized pointers array
199
131
  */
200
132
 
201
133
  export function buildPointers(pointers) {
@@ -203,11 +135,8 @@ export function buildPointers(pointers) {
203
135
  }
204
136
  /**
205
137
  * Helper function to read pointers from name update TX
206
- * @function
207
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
208
- * @param {Array} pointers - Array of pointers
209
- * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
210
- * @return {Array} Deserialize pointer array
138
+ * @param pointers - Array of pointers
139
+ * @returns Deserialize pointer array
211
140
  */
212
141
 
213
142
  export function readPointers(pointers) {
@@ -220,102 +149,75 @@ export function readPointers(pointers) {
220
149
  });
221
150
  }
222
151
  const AENS_SUFFIX = '.chain';
223
- /**
224
- * Ensure that AENS name is valid
225
- * @function
226
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
227
- * @param {string} name
228
- * @return void
229
- * @throws Error
230
- */
231
-
232
- export function ensureNameValid(name) {
233
- if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string');
234
- if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`);
235
- }
236
152
  /**
237
153
  * Is AENS name valid
238
- * @function
239
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
240
- * @param {string} name
241
- * @return Boolean
154
+ * @param name - AENS name
242
155
  */
243
156
 
244
157
  export function isNameValid(name) {
245
- try {
246
- ensureNameValid(name);
247
- return true;
248
- } catch (error) {
249
- return false;
250
- }
158
+ // TODO: probably there are stronger requirements
159
+ return name.endsWith(AENS_SUFFIX);
251
160
  }
252
161
  /**
253
162
  * @param identifier - account/oracle/contract address, or channel
254
- * @returns {String} default AENS pointer key
255
- * @throws exception when default key not defined
163
+ * @returns default AENS pointer key
256
164
  */
257
165
 
258
166
  export function getDefaultPointerKey(identifier) {
259
167
  decode(identifier);
260
- const prefix = identifier.substr(0, 2);
261
- return POINTER_KEY_BY_PREFIX[prefix] || (() => {
262
- throw new NoDefaultAensPointerError(prefix);
263
- })();
168
+ const prefix = identifier.substring(0, 2);
169
+ return POINTER_KEY_BY_PREFIX[prefix];
264
170
  }
265
171
  /**
266
172
  * Get the minimum AENS name fee
267
- * @function
268
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
269
- * @param {String} name the AENS name to get the fee for
270
- * @return {String} the minimum fee for the AENS name auction
173
+ *
174
+ * @param name - the AENS name to get the fee for
175
+ * @returns the minimum fee for the AENS name auction
271
176
  */
272
177
 
273
178
  export function getMinimumNameFee(name) {
274
- ensureNameValid(name);
275
179
  const nameLength = name.length - AENS_SUFFIX.length;
276
180
  return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];
277
181
  }
278
182
  /**
279
183
  * Compute bid fee for AENS auction
280
- * @function
281
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
282
- * @param {String} name the AENS name to get the fee for
283
- * @param {Number|String} startFee Auction start fee
284
- * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)
285
- * @return {String} Bid fee
286
- */
287
-
288
- export function computeBidFee(name, startFee) {
289
- let increment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NAME_FEE_BID_INCREMENT;
184
+ *
185
+ * @param name - the AENS name to get the fee for
186
+ * @param options - Options
187
+ * @param options.startFee - Auction start fee
188
+ * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
189
+ * @returns Bid fee
190
+ */
191
+
192
+ export function computeBidFee(name) {
193
+ let {
194
+ startFee,
195
+ increment = NAME_FEE_BID_INCREMENT
196
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
290
197
  if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);
291
- if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);
292
- return ceil(BigNumber(startFee !== null && startFee !== void 0 ? startFee : getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1)));
198
+ if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`); // FIXME: increment should be used somehow here
199
+
200
+ return ceil(new BigNumber(startFee !== null && startFee !== void 0 ? startFee : getMinimumNameFee(name)).times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)));
293
201
  }
294
202
  /**
295
203
  * Compute auction end height
296
- * @function
297
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
298
- * @param {String} name
299
- * @param {Number|String} claimHeight Auction starting height
300
- * @return {String} Auction end height
204
+ *
205
+ * @param name - Name to compute auction end for
206
+ * @param claimHeight - Auction starting height
207
+ * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
208
+ * @returns Auction end height
301
209
  */
302
210
 
303
211
  export function computeAuctionEndBlock(name, claimHeight) {
304
- ensureNameValid(name);
305
212
  const length = name.length - AENS_SUFFIX.length;
306
- const h = length <= 4 && NAME_BID_TIMEOUTS[4] || length <= 8 && NAME_BID_TIMEOUTS[8] || length <= 12 && NAME_BID_TIMEOUTS[12] || NAME_BID_TIMEOUTS[13];
307
- return h.plus(claimHeight).toString(10);
213
+ const h = length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS || length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS || length <= 12 && NAME_BID_TIMEOUT_BLOCKS || 0;
214
+ return h + claimHeight;
308
215
  }
309
216
  /**
310
217
  * Is name accept going to auction
311
- * @function
312
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
313
- * @param {String} name
314
- * @return {Boolean}
315
218
  */
316
219
 
317
220
  export function isAuctionName(name) {
318
- ensureNameValid(name);
319
221
  return name.length < 13 + AENS_SUFFIX.length;
320
222
  }
321
223
  //# sourceMappingURL=helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","hash","salt","encode","decode","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_MAX_LENGTH_FEE","POINTER_KEY_BY_PREFIX","ceil","TagNotFoundError","PrefixNotFoundError","InvalidNameError","IllegalBidFeeError","NoDefaultAensPointerError","ArgumentError","createSalt","buildContractId","ownerId","nonce","ownerIdAndNonce","from","b2bHash","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","concat","alloc","length","formatSalt","toString","padStart","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","base64Types","base58Types","typesLength","ak","ct","ok","ensureValidLength","data","type","PayloadLengthError","getChecksum","payload","sha256hash","slice","addChecksum","input","getPayload","buffer","equals","InvalidChecksumError","base64","string","base58","bs58","writeId","hashId","prefix","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","AENS_SUFFIX","endsWith","isNameValid","error","getDefaultPointerKey","identifier","substr","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName"],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { encode as bs58Encode, decode as bs58Decode } from 'bs58'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return encode(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength = {\n ak: 32,\n ct: 32,\n ok: 32\n}\n\nfunction ensureValidLength (data, type) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: buffer => addChecksum(buffer).toString('base64'),\n decode: string => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: buffer => bs58.encode(addChecksum(buffer)),\n decode: string => getPayload(bs58.decode(string))\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Ensure that AENS name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string')\n if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`)\n}\n\n/**\n * Is AENS name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new NoDefaultAensPointerError(prefix) })()\n}\n\n/**\n * Get the minimum AENS name fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @return {String} the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name) {\n ensureNameValid(name)\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (name, startFee, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(startFee ?? getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (name, claimHeight) {\n ensureNameValid(name)\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && NAME_BID_TIMEOUTS[4]) ||\n (length <= 8 && NAME_BID_TIMEOUTS[8]) ||\n (length <= 12 && NAME_BID_TIMEOUTS[12]) ||\n NAME_BID_TIMEOUTS[13]\n return h.plus(claimHeight).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n ensureNameValid(name)\n return name.length < 13 + AENS_SUFFIX.length\n}\n"],"file":"helpers.mjs"}
1
+ {"version":3,"file":"helpers.mjs","names":["BigNumber","hash","salt","encode","decode","toBytes","concatBuffers","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","POINTER_KEY_BY_PREFIX","ceil","TagNotFoundError","PrefixNotFoundError","IllegalBidFeeError","ArgumentError","createSalt","buildContractId","ownerId","nonce","ownerIdAndNonce","from","b2bHash","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","formatSalt","toString","padStart","produceNameId","name","toLowerCase","commitmentHash","writeId","hashId","prefix","slice","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","AENS_SUFFIX","isNameValid","endsWith","getDefaultPointerKey","identifier","substring","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode, EncodedData, EncodingType } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport { concatBuffers } from '../../utils/other'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX,\n AensName\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n IllegalBidFeeError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\nexport interface Pointer {\n key: string\n id: string\n}\n\n/**\n * Build a contract public key\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId (ownerId: EncodedData<'ak'>, nonce: number | BigNumber): EncodedData<'ct'> {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId (\n senderId: EncodedData<'ak'>,\n nonce: number | BigNumber | string,\n oracleId: EncodedData<'ok'>\n): EncodedData<'oq'> {\n function _int32 (val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true)\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @param salt - Random number\n * @returns Zero-padded hex string of salt\n */\nexport function formatSalt (salt: number): Buffer {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n *\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name: AensName): EncodedData<'nm'> {\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @param name - Name to be registered\n * @param salt - Random salt\n * @returns Commitment hash\n */\nexport function commitmentHash (name: AensName, salt: number = createSalt()): EncodedData<'cm'> {\n return encode(hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n/**\n * Utility function to create and _id type\n * @param hashId - Encoded hash\n * @returns Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId: string): Buffer {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2) as keyof typeof PREFIX_ID_TAG\n const idTag = PREFIX_ID_TAG[prefix]\n if (idTag == null) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId as EncodedData<EncodingType>)])\n}\n\n/**\n * Utility function to read and _id type\n * @param buf - Data\n * @returns Encoided hash string with prefix\n */\nexport function readId (buf: Buffer): string {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (prefix == null) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @param val - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val: number | string | BigNumber): Buffer {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\nexport function buildPointers (pointers: Pointer[]): Buffer[][] {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\nexport function readPointers (pointers: Array<[key: string, id: Buffer]>): Pointer[] {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Is AENS name valid\n * @param name - AENS name\n */\nexport function isNameValid (name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX)\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey (\n identifier: EncodedData<keyof typeof POINTER_KEY_BY_PREFIX>\n): POINTER_KEY_BY_PREFIX {\n decode(identifier)\n const prefix = identifier.substring(0, 2) as keyof typeof POINTER_KEY_BY_PREFIX\n return POINTER_KEY_BY_PREFIX[prefix]\n}\n\n/**\n * Get the minimum AENS name fee\n *\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n *\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee (\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber, increment?: number } = {}\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n *\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock (name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS) ||\n (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS) ||\n (length <= 12 && NAME_BID_TIMEOUT_BLOCKS) ||\n 0\n return h + claimHeight\n}\n\n/**\n * Is name accept going to auction\n */\nexport function isAuctionName (name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length\n}\n"],"mappings":"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"}