@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
@@ -1,7 +1,9 @@
1
+ import { EncodingType } from './../../utils/encoder'
1
2
  import BigNumber from 'bignumber.js'
2
3
  import { mapObject } from '../../utils/other'
3
4
 
4
5
  // # AENS
6
+ export type AensName = `${string}.chain`
5
7
  export const NAME_TTL = 180000
6
8
  // # max number of block into the future that the name is going to be available
7
9
  // # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update
@@ -9,6 +11,7 @@ export const NAME_TTL = 180000
9
11
  export const NAME_MAX_TTL = 36000
10
12
  export const NAME_MAX_CLIENT_TTL = 84600
11
13
  export const CLIENT_TTL = NAME_MAX_CLIENT_TTL
14
+ export const MIN_GAS_PRICE = 1e9
12
15
  // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
13
16
  export const NAME_FEE_MULTIPLIER = 1e14 // 100000000000000
14
17
  export const NAME_FEE_BID_INCREMENT = 0.05 // # the increment is in percentage
@@ -17,11 +20,11 @@ export const NAME_BID_TIMEOUT_BLOCKS = 480 // # ~1 day
17
20
  // # this is the max length for a domain that requires a base fee to be paid
18
21
  export const NAME_MAX_LENGTH_FEE = 31
19
22
  export const NAME_BID_MAX_LENGTH = 12 // # this is the max length for a domain to be part of a bid
20
- export const POINTER_KEY_BY_PREFIX = {
21
- ak: 'account_pubkey',
22
- ok: 'oracle_pubkey',
23
- ct: 'contract_pubkey',
24
- ch: 'channel'
23
+ export enum POINTER_KEY_BY_PREFIX {
24
+ ak = 'account_pubkey',
25
+ ok = 'oracle_pubkey',
26
+ ct = 'contract_pubkey',
27
+ ch = 'channel'
25
28
  }
26
29
  // # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290
27
30
  // # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times
@@ -60,15 +63,6 @@ export const NAME_BID_RANGES = mapObject({
60
63
  1: 5702887
61
64
  }, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)])
62
65
 
63
- // # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273
64
- // # name bid timeouts
65
- export const NAME_BID_TIMEOUTS = {
66
- 13: BigNumber(0),
67
- 12: BigNumber(NAME_BID_TIMEOUT_BLOCKS), // # 480 blocks
68
- 8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS), // # 14880 blocks
69
- 4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks
70
- }
71
-
72
66
  // # Tag constant for ids (type uint8)
73
67
  // # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type
74
68
  // # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>
@@ -95,6 +89,8 @@ export const PREFIX_ID_TAG = {
95
89
  ok: ID_TAG.oracle,
96
90
  ct: ID_TAG.contract,
97
91
  ch: ID_TAG.channel
98
- }
92
+ } as const
99
93
 
100
- export const ID_TAG_PREFIX = mapObject(PREFIX_ID_TAG, ([key, value]) => [value, key])
94
+ export const ID_TAG_PREFIX = mapObject(
95
+ PREFIX_ID_TAG, ([key, value]: [EncodingType, number]) => [value, key]
96
+ )
@@ -0,0 +1,111 @@
1
+ import {
2
+ writeId, readId, produceNameId, getMinimumNameFee, readInt, writeInt, isNameValid
3
+ } from './helpers'
4
+ import { InsufficientNameFeeError, IllegalArgumentError } from '../../utils/errors'
5
+ import BigNumber from 'bignumber.js'
6
+ import { MIN_GAS_PRICE, AensName } from './constants'
7
+ import { EncodedData } from '../../utils/encoder'
8
+
9
+ type Int = number | string | BigNumber
10
+
11
+ // todo: update me
12
+ // ? This is a TS workaround because this has to be a class with only static methods
13
+ export class Field {
14
+ public prototype: any
15
+
16
+ static serialize (value: any, _txFields: object = {}): Buffer {
17
+ return Buffer.from(value)
18
+ }
19
+
20
+ static deserialize (value: Buffer): any {
21
+ return value.toString()
22
+ }
23
+ }
24
+
25
+ export class Name extends Field {
26
+ /**
27
+ * @param value - AENS name
28
+ */
29
+ static serialize (value: AensName): Buffer {
30
+ return Buffer.from(value)
31
+ }
32
+
33
+ /**
34
+ * @param value - AENS name
35
+ */
36
+ static deserialize (value: Buffer): string {
37
+ return value.toString()
38
+ }
39
+ }
40
+
41
+ export class NameId extends Field {
42
+ /**
43
+ * @param value - AENS name ID
44
+ */
45
+ static serialize (value: AensName | EncodedData<'nm'>): Buffer {
46
+ return writeId(isNameValid(value) ? produceNameId(value) : value)
47
+ }
48
+
49
+ /**
50
+ * @param value - AENS name ID Buffer
51
+ */
52
+ static deserialize (value: Buffer): string {
53
+ return readId(value)
54
+ }
55
+ }
56
+
57
+ export class NameFee extends Field {
58
+ /**
59
+ * @param value - AENS name fee Buffer
60
+ * @param txFields - Transaction fields
61
+ * @param txFields.name - AENS Name in transaction
62
+ */
63
+ static serialize (value: Int | undefined, { name }: { name: AensName }): Buffer {
64
+ const minNameFee = getMinimumNameFee(name)
65
+ value ??= minNameFee
66
+ if (minNameFee.gt(value)) {
67
+ throw new InsufficientNameFeeError(new BigNumber(value), minNameFee)
68
+ }
69
+ return writeInt(value)
70
+ }
71
+
72
+ /**
73
+ * @param value - AENS name fee Buffer
74
+ * @returns AENS name fee
75
+ */
76
+ static deserialize (value: Buffer): string {
77
+ return readInt(value)
78
+ }
79
+ }
80
+
81
+ export class Deposit extends Field {
82
+ /**
83
+ * @param value - Deposit value in string format. Should be equal to '0'.
84
+ * @returns Deposit value Buffer.
85
+ */
86
+ static serialize (value: string = '0'): Buffer {
87
+ if (parseInt(value) !== 0) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value.toString()} instead`)
88
+ return writeInt(0)
89
+ }
90
+
91
+ /**
92
+ * @param value - Deposit value Buffer.
93
+ * @returns Deposit value.
94
+ */
95
+ static deserialize (value: Buffer): string {
96
+ return readInt(value)
97
+ }
98
+ }
99
+
100
+ export class GasPrice extends Field {
101
+ static serialize (value: Int = MIN_GAS_PRICE): Buffer {
102
+ if (+value < MIN_GAS_PRICE) {
103
+ throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger then ${MIN_GAS_PRICE}`)
104
+ }
105
+ return writeInt(value)
106
+ }
107
+
108
+ static deserialize (value: Buffer): string {
109
+ return readInt(value)
110
+ }
111
+ }
@@ -0,0 +1,253 @@
1
+ import BigNumber from 'bignumber.js'
2
+ import { hash, salt } from '../../utils/crypto'
3
+ import { encode, decode, EncodedData, EncodingType } from '../../utils/encoder'
4
+ import { toBytes } from '../../utils/bytes'
5
+ import { concatBuffers } from '../../utils/other'
6
+ import {
7
+ ID_TAG_PREFIX,
8
+ PREFIX_ID_TAG,
9
+ NAME_BID_RANGES,
10
+ NAME_FEE_BID_INCREMENT,
11
+ NAME_BID_TIMEOUT_BLOCKS,
12
+ NAME_MAX_LENGTH_FEE,
13
+ POINTER_KEY_BY_PREFIX,
14
+ AensName
15
+ } from './constants'
16
+ import { ceil } from '../../utils/bignumber'
17
+ import {
18
+ TagNotFoundError,
19
+ PrefixNotFoundError,
20
+ IllegalBidFeeError,
21
+ ArgumentError
22
+ } from '../../utils/errors'
23
+
24
+ /**
25
+ * JavaScript-based Transaction builder helper function's
26
+ */
27
+
28
+ export const createSalt = salt
29
+
30
+ export { encode, decode }
31
+
32
+ export interface Pointer {
33
+ key: string
34
+ id: string
35
+ }
36
+
37
+ /**
38
+ * Build a contract public key
39
+ * @param ownerId - The public key of the owner account
40
+ * @param nonce - the nonce of the transaction
41
+ * @returns Contract public key
42
+ */
43
+ export function buildContractId (ownerId: EncodedData<'ak'>, nonce: number | BigNumber): EncodedData<'ct'> {
44
+ const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)])
45
+ const b2bHash = hash(ownerIdAndNonce)
46
+ return encode(b2bHash, 'ct')
47
+ }
48
+
49
+ /**
50
+ * Build a oracle query id
51
+ * @param senderId - The public key of the sender account
52
+ * @param nonce - the nonce of the transaction
53
+ * @param oracleId - The oracle public key
54
+ * @returns Contract public key
55
+ */
56
+ export function oracleQueryId (
57
+ senderId: EncodedData<'ak'>,
58
+ nonce: number | BigNumber | string,
59
+ oracleId: EncodedData<'ok'>
60
+ ): EncodedData<'oq'> {
61
+ function _int32 (val: number | string | BigNumber): Buffer {
62
+ const nonceBE = toBytes(val, true)
63
+ return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE])
64
+ }
65
+
66
+ const b2bHash = hash(
67
+ Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]))
68
+ return encode(b2bHash, 'oq')
69
+ }
70
+
71
+ /**
72
+ * Format the salt into a 64-byte hex string
73
+ * @param salt - Random number
74
+ * @returns Zero-padded hex string of salt
75
+ */
76
+ export function formatSalt (salt: number): Buffer {
77
+ return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')
78
+ }
79
+
80
+ /**
81
+ * Encode an AENS name
82
+ *
83
+ * @param name - Name to encode
84
+ * @returns `nm_` prefixed encoded AENS name
85
+ */
86
+ export function produceNameId (name: AensName): EncodedData<'nm'> {
87
+ return encode(hash(name.toLowerCase()), 'nm')
88
+ }
89
+
90
+ /**
91
+ * Generate the commitment hash by hashing the formatted salt and
92
+ * name, base 58 encoding the result and prepending 'cm_'
93
+ *
94
+ * @param name - Name to be registered
95
+ * @param salt - Random salt
96
+ * @returns Commitment hash
97
+ */
98
+ export function commitmentHash (name: AensName, salt: number = createSalt()): EncodedData<'cm'> {
99
+ return encode(hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')
100
+ }
101
+
102
+ /**
103
+ * Utility function to create and _id type
104
+ * @param hashId - Encoded hash
105
+ * @returns Buffer Buffer with ID tag and decoded HASh
106
+ */
107
+ export function writeId (hashId: string): Buffer {
108
+ if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)
109
+ const prefix = hashId.slice(0, 2) as keyof typeof PREFIX_ID_TAG
110
+ const idTag = PREFIX_ID_TAG[prefix]
111
+ if (idTag == null) throw new TagNotFoundError(prefix)
112
+ return Buffer.from([...toBytes(idTag), ...decode(hashId as EncodedData<EncodingType>)])
113
+ }
114
+
115
+ /**
116
+ * Utility function to read and _id type
117
+ * @param buf - Data
118
+ * @returns Encoided hash string with prefix
119
+ */
120
+ export function readId (buf: Buffer): string {
121
+ const tag = Buffer.from(buf).readUIntBE(0, 1)
122
+ const prefix = ID_TAG_PREFIX[tag]
123
+ if (prefix == null) throw new PrefixNotFoundError(tag)
124
+ return encode(buf.slice(1, buf.length), prefix)
125
+ }
126
+
127
+ /**
128
+ * Utility function to convert int to bytes
129
+ * @param val - Value
130
+ * @returns Buffer Buffer from number(BigEndian)
131
+ */
132
+ export function writeInt (val: number | string | BigNumber): Buffer {
133
+ return toBytes(val, true)
134
+ }
135
+
136
+ /**
137
+ * Utility function to convert bytes to int
138
+ * @param buf - Value
139
+ * @returns Buffer Buffer from number(BigEndian)
140
+ */
141
+ export function readInt (buf: Buffer = Buffer.from([])): string {
142
+ return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)
143
+ }
144
+
145
+ /**
146
+ * Helper function to build pointers for name update TX
147
+ * @param pointers - Array of pointers
148
+ * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
149
+ * @returns Serialized pointers array
150
+ */
151
+ export function buildPointers (pointers: Pointer[]): Buffer[][] {
152
+ return pointers.map(
153
+ p => [
154
+ toBytes(p.key),
155
+ writeId(p.id)
156
+ ]
157
+ )
158
+ }
159
+
160
+ /**
161
+ * Helper function to read pointers from name update TX
162
+ * @param pointers - Array of pointers
163
+ * @returns Deserialize pointer array
164
+ */
165
+ export function readPointers (pointers: Array<[key: string, id: Buffer]>): Pointer[] {
166
+ return pointers.map(
167
+ ([key, id]) => Object.assign({
168
+ key: key.toString(),
169
+ id: readId(id)
170
+ })
171
+ )
172
+ }
173
+
174
+ const AENS_SUFFIX = '.chain'
175
+
176
+ /**
177
+ * Is AENS name valid
178
+ * @param name - AENS name
179
+ */
180
+ export function isNameValid (name: string): name is AensName {
181
+ // TODO: probably there are stronger requirements
182
+ return name.endsWith(AENS_SUFFIX)
183
+ }
184
+
185
+ /**
186
+ * @param identifier - account/oracle/contract address, or channel
187
+ * @returns default AENS pointer key
188
+ */
189
+ export function getDefaultPointerKey (
190
+ identifier: EncodedData<keyof typeof POINTER_KEY_BY_PREFIX>
191
+ ): POINTER_KEY_BY_PREFIX {
192
+ decode(identifier)
193
+ const prefix = identifier.substring(0, 2) as keyof typeof POINTER_KEY_BY_PREFIX
194
+ return POINTER_KEY_BY_PREFIX[prefix]
195
+ }
196
+
197
+ /**
198
+ * Get the minimum AENS name fee
199
+ *
200
+ * @param name - the AENS name to get the fee for
201
+ * @returns the minimum fee for the AENS name auction
202
+ */
203
+ export function getMinimumNameFee (name: AensName): BigNumber {
204
+ const nameLength = name.length - AENS_SUFFIX.length
205
+ return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]
206
+ }
207
+
208
+ /**
209
+ * Compute bid fee for AENS auction
210
+ *
211
+ * @param name - the AENS name to get the fee for
212
+ * @param options - Options
213
+ * @param options.startFee - Auction start fee
214
+ * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
215
+ * @returns Bid fee
216
+ */
217
+ export function computeBidFee (
218
+ name: AensName,
219
+ { startFee, increment = NAME_FEE_BID_INCREMENT }:
220
+ { startFee?: number | string | BigNumber, increment?: number } = {}
221
+ ): BigNumber {
222
+ if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)
223
+ if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)
224
+ // FIXME: increment should be used somehow here
225
+ return ceil(
226
+ new BigNumber(startFee ?? getMinimumNameFee(name))
227
+ .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1))
228
+ )
229
+ }
230
+
231
+ /**
232
+ * Compute auction end height
233
+ *
234
+ * @param name - Name to compute auction end for
235
+ * @param claimHeight - Auction starting height
236
+ * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
237
+ * @returns Auction end height
238
+ */
239
+ export function computeAuctionEndBlock (name: AensName, claimHeight: number): number {
240
+ const length = name.length - AENS_SUFFIX.length
241
+ const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS) ||
242
+ (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS) ||
243
+ (length <= 12 && NAME_BID_TIMEOUT_BLOCKS) ||
244
+ 0
245
+ return h + claimHeight
246
+ }
247
+
248
+ /**
249
+ * Is name accept going to auction
250
+ */
251
+ export function isAuctionName (name: AensName): boolean {
252
+ return name.length < 13 + AENS_SUFFIX.length
253
+ }