@aeternity/aepp-sdk 11.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20764 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +138 -88
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +122 -0
  135. package/es/tx/builder/constants.mjs.map +1 -0
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -240
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -664
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -108
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +118 -0
  218. package/es/utils/encoder.mjs.map +1 -0
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +56 -42
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +170 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +146 -0
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/node-pool/index.mjs +0 -188
  360. package/es/node-pool/index.mjs.map +0 -1
  361. package/es/node.mjs +0 -133
  362. package/es/node.mjs.map +0 -1
  363. package/es/other.d.ts +0 -31
  364. package/es/semver-satisfies.d.ts +0 -1
  365. package/es/string.d.ts +0 -26
  366. package/es/tx/builder/field-types.mjs +0 -74
  367. package/es/tx/builder/field-types.mjs.map +0 -1
  368. package/es/tx/tx-object.mjs +0 -283
  369. package/es/tx/tx-object.mjs.map +0 -1
  370. package/es/tx/tx.mjs +0 -938
  371. package/es/tx/tx.mjs.map +0 -1
  372. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  374. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  376. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  378. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  380. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  381. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  382. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  384. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  386. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  388. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  389. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  390. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  392. package/es/utils/async-init.mjs +0 -64
  393. package/es/utils/async-init.mjs.map +0 -1
  394. package/es/utils/crypto-ts.mjs.map +0 -1
  395. package/es/utils/swagger.mjs +0 -164
  396. package/es/utils/swagger.mjs.map +0 -1
  397. package/src/account/base.js +0 -153
  398. package/src/account/memory.js +0 -83
  399. package/src/account/multiple.js +0 -162
  400. package/src/ae/aens.js +0 -361
  401. package/src/ae/aepp.js +0 -45
  402. package/src/ae/contract.js +0 -148
  403. package/src/ae/index.js +0 -168
  404. package/src/ae/oracle.js +0 -311
  405. package/src/ae/universal.js +0 -47
  406. package/src/ae/wallet.js +0 -50
  407. package/src/chain/index.js +0 -269
  408. package/src/chain/node.js +0 -320
  409. package/src/channel/handlers.js +0 -673
  410. package/src/channel/index.js +0 -898
  411. package/src/channel/internal.js +0 -237
  412. package/src/contract/aci.js +0 -376
  413. package/src/contract/compiler.js +0 -100
  414. package/src/contract/ga/helpers.js +0 -19
  415. package/src/contract/ga/index.js +0 -150
  416. package/src/index.js +0 -89
  417. package/src/node-pool/index.js +0 -172
  418. package/src/node.js +0 -116
  419. package/src/tx/builder/field-types.js +0 -61
  420. package/src/tx/builder/helpers.js +0 -380
  421. package/src/tx/builder/index.js +0 -465
  422. package/src/tx/builder/schema.js +0 -1197
  423. package/src/tx/index.js +0 -301
  424. package/src/tx/tx-object.js +0 -187
  425. package/src/tx/tx.js +0 -631
  426. package/src/tx/validator.js +0 -181
  427. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  428. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  429. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  430. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  431. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  432. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  433. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  434. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  435. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  436. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  437. package/src/utils/async-init.js +0 -45
  438. package/src/utils/crypto.js +0 -229
  439. package/src/utils/hd-wallet.js +0 -100
  440. package/src/utils/json-big.js +0 -26
  441. package/src/utils/keystore.js +0 -219
  442. package/src/utils/swagger.js +0 -156
@@ -0,0 +1,27 @@
1
+ import uInt, { Int } from './u-int';
2
+ import { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';
3
+ import { ArgumentError } from '../../../utils/errors';
4
+
5
+ export interface Options { denomination?: AE_AMOUNT_FORMATS }
6
+
7
+ export default {
8
+ ...uInt,
9
+
10
+ serializeAettos(value: string | undefined): string {
11
+ if (value == null) throw new ArgumentError('value', 'provided', value);
12
+ return value;
13
+ },
14
+
15
+ serializeOptional(value: Int | undefined, { denomination, ...options }: Options): Buffer {
16
+ return uInt.serialize(
17
+ this.serializeAettos(
18
+ value != null ? formatAmount(value, { denomination }) : value,
19
+ options,
20
+ ),
21
+ );
22
+ },
23
+
24
+ serialize(value: Int, options: Options): Buffer {
25
+ return this.serializeOptional(value, options);
26
+ },
27
+ };
@@ -0,0 +1,21 @@
1
+ import coinAmount from './coin-amount';
2
+ import { Int } from './u-int';
3
+ import { IllegalArgumentError } from '../../../utils/errors';
4
+
5
+ export default {
6
+ ...coinAmount,
7
+
8
+ /**
9
+ * @param value - Deposit value in string format. Should be equal to '0'.
10
+ * @param options - Options
11
+ * @returns Deposit value Buffer.
12
+ */
13
+ serialize(
14
+ value: Int | undefined,
15
+ options: Parameters<typeof coinAmount['serialize']>[1],
16
+ ): Buffer {
17
+ value ??= 0;
18
+ if (+value !== 0) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value.toString()} instead`);
19
+ return coinAmount.serialize(value, options);
20
+ },
21
+ };
@@ -0,0 +1,143 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { IllegalArgumentError } from '../../../utils/errors';
3
+ import { MIN_GAS_PRICE, Tag } from '../constants';
4
+ import coinAmount from './coin-amount';
5
+ import { isKeyOfObject } from '../../../utils/other';
6
+
7
+ const BASE_GAS = 15000;
8
+ const GAS_PER_BYTE = 20;
9
+ const KEY_BLOCK_INTERVAL = 3;
10
+
11
+ /**
12
+ * Calculate the Base fee gas
13
+ * @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}
14
+ * @param txType - The transaction type
15
+ * @returns The base fee
16
+ * @example
17
+ * ```js
18
+ * TX_FEE_BASE('channelForceProgress') => new BigNumber(30 * 15000)
19
+ * ```
20
+ */
21
+ const TX_FEE_BASE_GAS = (txType: Tag): BigNumber => {
22
+ const feeFactors = {
23
+ [Tag.ChannelForceProgressTx]: 30,
24
+ [Tag.ChannelOffChainTx]: 0,
25
+ [Tag.ChannelOffChainUpdateCallContract]: 0,
26
+ [Tag.ChannelOffChainUpdateCreateContract]: 0,
27
+ [Tag.ChannelOffChainUpdateDeposit]: 0,
28
+ [Tag.ChannelOffChainUpdateWithdraw]: 0,
29
+ [Tag.ChannelOffChainUpdateTransfer]: 0,
30
+ [Tag.ContractCreateTx]: 5,
31
+ [Tag.ContractCallTx]: 12,
32
+ [Tag.GaAttachTx]: 5,
33
+ [Tag.GaMetaTx]: 5,
34
+ [Tag.PayingForTx]: 1 / 5,
35
+ } as const;
36
+ const factor = feeFactors[txType as keyof typeof feeFactors] ?? 1;
37
+ return new BigNumber(factor * BASE_GAS);
38
+ };
39
+
40
+ /**
41
+ * Calculate fee for Other types of transactions
42
+ * @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}
43
+ * @param txType - The transaction type
44
+ * @param txSize - The transaction size
45
+ * @returns parameters - The transaction parameters
46
+ * @returns parameters.relativeTtl - The relative ttl
47
+ * @returns parameters.innerTxSize - The size of the inner transaction
48
+ * @returns The Other fee
49
+ * @example
50
+ * ```js
51
+ * TX_FEE_OTHER_GAS('oracleResponse',10, { relativeTtl: 10, innerTxSize: 10 })
52
+ * => new BigNumber(10).times(20).plus(Math.ceil(32000 * 10 / Math.floor(60 * 24 * 365 / 2)))
53
+ * ```
54
+ */
55
+ const TX_FEE_OTHER_GAS = (
56
+ txType: Tag,
57
+ txSize: number,
58
+ { relativeTtl, innerTxSize }: { relativeTtl: number; innerTxSize: number },
59
+ ): BigNumber => {
60
+ switch (txType) {
61
+ case Tag.OracleRegisterTx:
62
+ case Tag.OracleExtendTx:
63
+ case Tag.OracleQueryTx:
64
+ case Tag.OracleResponseTx:
65
+ return new BigNumber(txSize)
66
+ .times(GAS_PER_BYTE)
67
+ .plus(
68
+ Math.ceil((32000 * relativeTtl) / Math.floor((60 * 24 * 365) / KEY_BLOCK_INTERVAL)),
69
+ );
70
+ case Tag.GaMetaTx:
71
+ case Tag.PayingForTx:
72
+ return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE);
73
+ default:
74
+ return new BigNumber(txSize).times(GAS_PER_BYTE);
75
+ }
76
+ };
77
+
78
+ function getOracleRelativeTtl(params: any, txType: Tag): number {
79
+ const ttlKeys = {
80
+ [Tag.OracleRegisterTx]: 'oracleTtlValue',
81
+ [Tag.OracleExtendTx]: 'oracleTtlValue',
82
+ [Tag.OracleQueryTx]: 'queryTtlValue',
83
+ [Tag.OracleResponseTx]: 'responseTtlValue',
84
+ } as const;
85
+
86
+ if (!isKeyOfObject(txType, ttlKeys)) return 1;
87
+ return params[ttlKeys[txType]];
88
+ }
89
+
90
+ /**
91
+ * Calculate fee based on tx type and params
92
+ */
93
+ export function buildFee(txType: Tag, buildTx: any): BigNumber {
94
+ const { rlpEncoded: { length }, txObject } = buildTx;
95
+
96
+ return TX_FEE_BASE_GAS(txType)
97
+ .plus(TX_FEE_OTHER_GAS(txType, length, {
98
+ relativeTtl: getOracleRelativeTtl(txObject, txType),
99
+ innerTxSize: [Tag.GaMetaTx, Tag.PayingForTx].includes(txType)
100
+ ? txObject.tx.tx.encodedTx.rlpEncoded.length
101
+ : 0,
102
+ }))
103
+ .times(MIN_GAS_PRICE);
104
+ }
105
+
106
+ /**
107
+ * Calculate min fee
108
+ * @category transaction builder
109
+ * @param txType - Transaction type
110
+ * @param rebuildTx - Callback to get built transaction with specific fee
111
+ */
112
+ export function calculateMinFee(
113
+ txType: Tag,
114
+ rebuildTx: (value: BigNumber) => any,
115
+ ): BigNumber {
116
+ let fee = new BigNumber(0);
117
+ let previousFee;
118
+ do {
119
+ previousFee = fee;
120
+ fee = buildFee(txType, rebuildTx(fee));
121
+ } while (!fee.eq(previousFee));
122
+ return fee;
123
+ }
124
+
125
+ export default {
126
+ ...coinAmount,
127
+
128
+ serializeAettos(
129
+ _value: string | undefined,
130
+ { txType, rebuildTx, _computingMinFee }:
131
+ { txType: Tag; rebuildTx: (params: any) => any; _computingMinFee?: string },
132
+ ): string {
133
+ if (_computingMinFee != null) return _computingMinFee;
134
+ const minFee = calculateMinFee(txType, (fee) => rebuildTx({ _computingMinFee: fee }));
135
+ const value = new BigNumber(_value ?? minFee);
136
+ if (minFee.gt(value)) {
137
+ throw new IllegalArgumentError(`Fee ${value.toString()} must be bigger then ${minFee}`);
138
+ }
139
+ return value.toFixed();
140
+ },
141
+
142
+ serialize: coinAmount.serializeOptional,
143
+ };
@@ -0,0 +1,9 @@
1
+ export default {
2
+ serialize(value: string): Buffer {
3
+ return Buffer.from(value);
4
+ },
5
+
6
+ deserialize(value: Buffer): string {
7
+ return value.toString();
8
+ },
9
+ };
@@ -0,0 +1,41 @@
1
+ import { IllegalArgumentError } from '../../../utils/errors';
2
+ import { MIN_GAS_PRICE, Tag } from '../constants';
3
+ import shortUInt from './short-u-int';
4
+ import { buildFee } from './fee';
5
+
6
+ function calculateGasLimitMax(
7
+ txType: Tag,
8
+ gasMax: number,
9
+ rebuildTx: (value: number) => any,
10
+ ): number {
11
+ return gasMax - +buildFee(txType, rebuildTx(gasMax)).dividedBy(MIN_GAS_PRICE);
12
+ }
13
+
14
+ export default {
15
+ ...shortUInt,
16
+
17
+ serialize(
18
+ _value: number | undefined,
19
+ {
20
+ txType, rebuildTx, gasMax = 6e6, _computingGasLimit,
21
+ }: {
22
+ txType: Tag;
23
+ rebuildTx: (params: any) => any;
24
+ gasMax: number;
25
+ _computingGasLimit?: number;
26
+ },
27
+ ): Buffer {
28
+ if (_computingGasLimit != null) return shortUInt.serialize(_computingGasLimit);
29
+
30
+ const gasLimitMax = calculateGasLimitMax(
31
+ txType,
32
+ gasMax,
33
+ (gasLimit) => rebuildTx({ _computingGasLimit: gasLimit }),
34
+ );
35
+ const value = _value ?? gasLimitMax;
36
+ if (value > gasLimitMax) {
37
+ throw new IllegalArgumentError(`Gas limit ${value} must be less or equal to ${gasLimitMax}`);
38
+ }
39
+ return shortUInt.serialize(value);
40
+ },
41
+ };
@@ -0,0 +1,16 @@
1
+ import coinAmount from './coin-amount';
2
+ import { IllegalArgumentError } from '../../../utils/errors';
3
+ import { MIN_GAS_PRICE } from '../constants';
4
+
5
+ export default {
6
+ ...coinAmount,
7
+
8
+ serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {
9
+ if (+value < MIN_GAS_PRICE) {
10
+ throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger then ${MIN_GAS_PRICE}`);
11
+ }
12
+ return value;
13
+ },
14
+
15
+ serialize: coinAmount.serializeOptional,
16
+ };
@@ -0,0 +1,45 @@
1
+ import _field from './field';
2
+ import _uInt from './u-int';
3
+ import _shortUInt from './short-u-int';
4
+ import _coinAmount from './coin-amount';
5
+
6
+ import _deposit from './deposit';
7
+ import _fee from './fee';
8
+ import _gasLimit from './gas-limit';
9
+ import _gasPrice from './gas-price';
10
+ import _name from './name';
11
+ import _nameFee from './name-fee';
12
+ import _nameId from './name-id';
13
+
14
+ // TODO: remove after fixing https://github.com/Gerrit0/typedoc-plugin-missing-exports/issues/15
15
+ const field = _field;
16
+ const uInt = _uInt;
17
+ const shortUInt = _shortUInt;
18
+ const coinAmount = _coinAmount;
19
+
20
+ const deposit = _deposit;
21
+ const fee = _fee;
22
+ const gasLimit = _gasLimit;
23
+ const gasPrice = _gasPrice;
24
+ const name = _name;
25
+ const nameFee = _nameFee;
26
+ const nameId = _nameId;
27
+
28
+ export type Field = typeof field | typeof uInt | typeof shortUInt | typeof coinAmount
29
+ | typeof deposit | typeof fee | typeof gasLimit | typeof gasPrice | typeof name | typeof nameFee
30
+ | typeof nameId;
31
+
32
+ export {
33
+ field,
34
+ uInt,
35
+ shortUInt,
36
+ coinAmount,
37
+
38
+ deposit,
39
+ fee,
40
+ gasLimit,
41
+ gasPrice,
42
+ name,
43
+ nameFee,
44
+ nameId,
45
+ };
@@ -0,0 +1,32 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { getMinimumNameFee } from '../helpers';
3
+ import { InsufficientNameFeeError } from '../../../utils/errors';
4
+ import { Int } from './u-int';
5
+ import coinAmount from './coin-amount';
6
+ import { AensName } from '../constants';
7
+
8
+ export default {
9
+ ...coinAmount,
10
+
11
+ serializeAettos(
12
+ _value: string | undefined,
13
+ txFields: { name: AensName },
14
+ ): string {
15
+ const minNameFee = getMinimumNameFee(txFields.name);
16
+ const value = new BigNumber(_value ?? minNameFee);
17
+ if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);
18
+ return value.toFixed();
19
+ },
20
+
21
+ /**
22
+ * @param value - AENS name fee Buffer
23
+ * @param txFields - Transaction fields
24
+ * @param txFields.name - AENS Name in transaction
25
+ */
26
+ serialize(
27
+ value: Int | undefined,
28
+ txFields: { name: AensName } & Parameters<typeof coinAmount['serialize']>[1],
29
+ ): Buffer {
30
+ return coinAmount.serializeOptional.call(this, value, txFields);
31
+ },
32
+ };
@@ -0,0 +1,20 @@
1
+ import { AensName } from '../constants';
2
+ import { produceNameId, isNameValid } from '../helpers';
3
+ import { writeId, readId } from '../address';
4
+ import { Encoded } from '../../../utils/encoder';
5
+
6
+ export default {
7
+ /**
8
+ * @param value - AENS name ID
9
+ */
10
+ serialize(value: AensName | Encoded.Name): Buffer {
11
+ return writeId(isNameValid(value) ? produceNameId(value) : value);
12
+ },
13
+
14
+ /**
15
+ * @param value - AENS name ID Buffer
16
+ */
17
+ deserialize(value: Buffer): Encoded.Name {
18
+ return readId(value) as Encoded.Name;
19
+ },
20
+ };
@@ -0,0 +1,18 @@
1
+ import field from './field';
2
+ import { AensName } from '../constants';
3
+
4
+ export default {
5
+ /**
6
+ * @param value - AENS name
7
+ */
8
+ serialize(value: AensName): Buffer {
9
+ return field.serialize(value);
10
+ },
11
+
12
+ /**
13
+ * @param value - AENS name
14
+ */
15
+ deserialize(value: Buffer): AensName {
16
+ return field.deserialize(value) as AensName;
17
+ },
18
+ };
@@ -0,0 +1,11 @@
1
+ import uInt from './u-int';
2
+
3
+ export default {
4
+ serialize(value: number): Buffer {
5
+ return uInt.serialize(value);
6
+ },
7
+
8
+ deserialize(value: Buffer): number {
9
+ return +uInt.deserialize(value);
10
+ },
11
+ };
@@ -0,0 +1,16 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { readInt, writeInt } from '../helpers';
3
+ import { ArgumentError } from '../../../utils/errors';
4
+
5
+ export type Int = number | string | BigNumber;
6
+
7
+ export default {
8
+ serialize(value: Int): Buffer {
9
+ if (value < 0) throw new ArgumentError('value', 'greater or equal to 0', value);
10
+ return writeInt(value);
11
+ },
12
+
13
+ deserialize(value: Buffer): string {
14
+ return readInt(value);
15
+ },
16
+ };
@@ -0,0 +1,248 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { genSalt, hash } from '../../utils/crypto';
3
+ import {
4
+ decode, encode, Encoded, Encoding,
5
+ } from '../../utils/encoder';
6
+ import { toBytes } from '../../utils/bytes';
7
+ import { concatBuffers } from '../../utils/other';
8
+ import {
9
+ AensName,
10
+ NAME_BID_RANGES,
11
+ NAME_BID_TIMEOUT_BLOCKS,
12
+ NAME_FEE_BID_INCREMENT,
13
+ NAME_MAX_LENGTH_FEE,
14
+ } from './constants';
15
+ import { ceil } from '../../utils/bignumber';
16
+ import { ArgumentError, IllegalBidFeeError } from '../../utils/errors';
17
+ import { NamePointer } from '../../apis/node';
18
+ import { readId, writeId } from './address';
19
+
20
+ /**
21
+ * JavaScript-based Transaction builder helper function's
22
+ */
23
+
24
+ /**
25
+ * Build a contract public key
26
+ * @category contract
27
+ * @param ownerId - The public key of the owner account
28
+ * @param nonce - the nonce of the transaction
29
+ * @returns Contract public key
30
+ */
31
+ export function buildContractId(
32
+ ownerId: Encoded.AccountAddress,
33
+ nonce: number | BigNumber,
34
+ ): Encoded.ContractAddress {
35
+ const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);
36
+ const b2bHash = hash(ownerIdAndNonce);
37
+ return encode(b2bHash, Encoding.ContractAddress);
38
+ }
39
+
40
+ /**
41
+ * Build a oracle query id
42
+ * @category oracle
43
+ * @param senderId - The public key of the sender account
44
+ * @param nonce - the nonce of the transaction
45
+ * @param oracleId - The oracle public key
46
+ * @returns Contract public key
47
+ */
48
+ export function oracleQueryId(
49
+ senderId: Encoded.AccountAddress,
50
+ nonce: number | BigNumber | string,
51
+ oracleId: Encoded.OracleAddress,
52
+ ): Encoded.OracleQueryId {
53
+ function _int32(val: number | string | BigNumber): Buffer {
54
+ const nonceBE = toBytes(val, true);
55
+ return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);
56
+ }
57
+
58
+ const b2bHash = hash(
59
+ Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),
60
+ );
61
+ return encode(b2bHash, Encoding.OracleQueryId);
62
+ }
63
+
64
+ /**
65
+ * Format the salt into a 64-byte hex string
66
+ * @category transaction builder
67
+ * @param salt - Random number
68
+ * @returns Zero-padded hex string of salt
69
+ */
70
+ export function formatSalt(salt: number): Buffer {
71
+ return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex');
72
+ }
73
+
74
+ /**
75
+ * Encode an AENS name
76
+ * @category AENS
77
+ * @param name - Name to encode
78
+ * @returns `nm_` prefixed encoded AENS name
79
+ */
80
+ export function produceNameId(name: AensName): Encoded.Name {
81
+ return encode(hash(name.toLowerCase()), Encoding.Name);
82
+ }
83
+
84
+ /**
85
+ * Generate the commitment hash by hashing the formatted salt and
86
+ * name, base 58 encoding the result and prepending 'cm_'
87
+ * @category transaction builder
88
+ * @param name - Name to be registered
89
+ * @param salt - Random salt
90
+ * @returns Commitment hash
91
+ */
92
+ export function commitmentHash(
93
+ name: AensName,
94
+ salt: number = genSalt(),
95
+ ): Encoded.Commitment {
96
+ return encode(
97
+ hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])),
98
+ Encoding.Commitment,
99
+ );
100
+ }
101
+
102
+ /**
103
+ * Utility function to convert int to bytes
104
+ * @category transaction builder
105
+ * @param val - Value
106
+ * @returns Buffer Buffer from number(BigEndian)
107
+ */
108
+ export function writeInt(val: number | string | BigNumber): Buffer {
109
+ return toBytes(val, true);
110
+ }
111
+
112
+ /**
113
+ * Utility function to convert bytes to int
114
+ * @category transaction builder
115
+ * @param buf - Value
116
+ * @returns Buffer Buffer from number(BigEndian)
117
+ */
118
+ export function readInt(buf: Buffer = Buffer.from([])): string {
119
+ return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);
120
+ }
121
+
122
+ /**
123
+ * Helper function to build pointers for name update TX
124
+ * @category transaction builder
125
+ * @param pointers - Array of pointers
126
+ * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
127
+ * @returns Serialized pointers array
128
+ */
129
+ export function buildPointers(pointers: NamePointer[]): Buffer[][] {
130
+ return pointers.map(
131
+ (p) => [
132
+ toBytes(p.key),
133
+ writeId(p.id as Parameters<typeof writeId>[0]),
134
+ ],
135
+ );
136
+ }
137
+
138
+ /**
139
+ * Helper function to read pointers from name update TX
140
+ * @category transaction builder
141
+ * @param pointers - Array of pointers
142
+ * @returns Deserialize pointer array
143
+ */
144
+ export function readPointers(pointers: Array<[key: string, id: Buffer]>): NamePointer[] {
145
+ return pointers.map(
146
+ ([key, id]) => ({
147
+ key: key.toString(),
148
+ id: readId(id),
149
+ }),
150
+ );
151
+ }
152
+
153
+ const AENS_SUFFIX = '.chain';
154
+
155
+ /**
156
+ * Is AENS name valid
157
+ * @category AENS
158
+ * @param name - AENS name
159
+ */
160
+ export function isNameValid(name: string): name is AensName {
161
+ // TODO: probably there are stronger requirements
162
+ return name.endsWith(AENS_SUFFIX);
163
+ }
164
+
165
+ const encodingToPointerKey = [
166
+ [Encoding.AccountAddress, 'account_pubkey'],
167
+ [Encoding.OracleAddress, 'oracle_pubkey'],
168
+ [Encoding.ContractAddress, 'contract_pubkey'],
169
+ [Encoding.Channel, 'channel'],
170
+ ] as const;
171
+
172
+ /**
173
+ * @category AENS
174
+ * @param identifier - account/oracle/contract address, or channel
175
+ * @returns default AENS pointer key
176
+ */
177
+ export function getDefaultPointerKey(
178
+ identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,
179
+ ): typeof encodingToPointerKey[number][1] {
180
+ decode(identifier);
181
+ const encoding = identifier.substring(0, 2);
182
+ const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];
183
+ if (result != null) return result;
184
+ throw new ArgumentError(
185
+ 'identifier',
186
+ `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,
187
+ identifier,
188
+ );
189
+ }
190
+
191
+ /**
192
+ * Get the minimum AENS name fee
193
+ * @category AENS
194
+ * @param name - the AENS name to get the fee for
195
+ * @returns the minimum fee for the AENS name auction
196
+ */
197
+ export function getMinimumNameFee(name: AensName): BigNumber {
198
+ const nameLength = name.length - AENS_SUFFIX.length;
199
+ return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];
200
+ }
201
+
202
+ /**
203
+ * Compute bid fee for AENS auction
204
+ * @category AENS
205
+ * @param name - the AENS name to get the fee for
206
+ * @param options - Options
207
+ * @param options.startFee - Auction start fee
208
+ * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
209
+ * @returns Bid fee
210
+ */
211
+ export function computeBidFee(
212
+ name: AensName,
213
+ { startFee, increment = NAME_FEE_BID_INCREMENT }:
214
+ { startFee?: number | string | BigNumber; increment?: number } = {},
215
+ ): BigNumber {
216
+ if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);
217
+ if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);
218
+ // FIXME: increment should be used somehow here
219
+ return ceil(
220
+ new BigNumber(startFee ?? getMinimumNameFee(name))
221
+ .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),
222
+ );
223
+ }
224
+
225
+ /**
226
+ * Compute auction end height
227
+ * @category AENS
228
+ * @param name - Name to compute auction end for
229
+ * @param claimHeight - Auction starting height
230
+ * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
231
+ * @returns Auction end height
232
+ */
233
+ export function computeAuctionEndBlock(name: AensName, claimHeight: number): number {
234
+ const length = name.length - AENS_SUFFIX.length;
235
+ const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS)
236
+ || (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS)
237
+ || (length <= 12 && NAME_BID_TIMEOUT_BLOCKS)
238
+ || 0;
239
+ return h + claimHeight;
240
+ }
241
+
242
+ /**
243
+ * Is name accept going to auction
244
+ * @category AENS
245
+ */
246
+ export function isAuctionName(name: AensName): boolean {
247
+ return name.length < 13 + AENS_SUFFIX.length;
248
+ }