ccxt-ir 4.10.0 → 4.11.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 (1047) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/js/ccxt.d.ts +5 -2
  8. package/js/ccxt.js +4 -2
  9. package/js/src/abstract/bidarz.d.ts +9 -0
  10. package/js/src/abstract/bidarz.js +11 -0
  11. package/js/src/bidarz.d.ts +22 -0
  12. package/js/src/bidarz.js +336 -0
  13. package/js/src/bit24.js +4 -3
  14. package/js/src/src/abantether.d.ts +21 -0
  15. package/js/src/src/abantether.js +353 -0
  16. package/js/src/src/abstract/abantether.d.ts +8 -0
  17. package/js/src/src/abstract/abantether.js +11 -0
  18. package/js/src/src/abstract/afratether.d.ts +9 -0
  19. package/js/src/src/abstract/afratether.js +11 -0
  20. package/js/src/src/abstract/alpaca.d.ts +77 -0
  21. package/js/src/src/abstract/alpaca.js +11 -0
  22. package/js/src/src/abstract/apex.d.ts +34 -0
  23. package/js/src/src/abstract/apex.js +11 -0
  24. package/js/src/src/abstract/arzinja.d.ts +8 -0
  25. package/js/src/src/abstract/arzinja.js +11 -0
  26. package/js/src/src/abstract/arzplus.d.ts +11 -0
  27. package/js/src/src/abstract/arzplus.js +11 -0
  28. package/js/src/src/abstract/ascendex.d.ts +80 -0
  29. package/js/src/src/abstract/ascendex.js +11 -0
  30. package/js/src/src/abstract/asretether.d.ts +8 -0
  31. package/js/src/src/abstract/asretether.js +11 -0
  32. package/js/src/src/abstract/bidarz.d.ts +9 -0
  33. package/js/src/src/abstract/bidarz.js +11 -0
  34. package/js/src/src/abstract/bigone.d.ts +48 -0
  35. package/js/src/src/abstract/bigone.js +11 -0
  36. package/js/src/src/abstract/binance.d.ts +773 -0
  37. package/js/src/src/abstract/binance.js +11 -0
  38. package/js/src/src/abstract/bingx.d.ts +165 -0
  39. package/js/src/src/abstract/bingx.js +11 -0
  40. package/js/src/src/abstract/bit24.d.ts +9 -0
  41. package/js/src/src/abstract/bit24.js +11 -0
  42. package/js/src/src/abstract/bit2c.d.ts +30 -0
  43. package/js/src/src/abstract/bit2c.js +11 -0
  44. package/js/src/src/abstract/bitbank.d.ts +35 -0
  45. package/js/src/src/abstract/bitbank.js +11 -0
  46. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  47. package/js/src/src/abstract/bitbarg.js +11 -0
  48. package/js/src/src/abstract/bitbns.d.ts +43 -0
  49. package/js/src/src/abstract/bitbns.js +11 -0
  50. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  51. package/js/src/src/abstract/bitfinex.js +11 -0
  52. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  53. package/js/src/src/abstract/bitflyer.js +11 -0
  54. package/js/src/src/abstract/bitget.d.ts +578 -0
  55. package/js/src/src/abstract/bitget.js +11 -0
  56. package/js/src/src/abstract/bithumb.d.ts +35 -0
  57. package/js/src/src/abstract/bithumb.js +11 -0
  58. package/js/src/src/abstract/bitimen.d.ts +10 -0
  59. package/js/src/src/abstract/bitimen.js +11 -0
  60. package/js/src/src/abstract/bitir.d.ts +10 -0
  61. package/js/src/src/abstract/bitir.js +11 -0
  62. package/js/src/src/abstract/bitmart.d.ts +120 -0
  63. package/js/src/src/abstract/bitmart.js +11 -0
  64. package/js/src/src/abstract/bitmex.d.ts +100 -0
  65. package/js/src/src/abstract/bitmex.js +11 -0
  66. package/js/src/src/abstract/bitopro.d.ts +33 -0
  67. package/js/src/src/abstract/bitopro.js +11 -0
  68. package/js/src/src/abstract/bitpin.d.ts +11 -0
  69. package/js/src/src/abstract/bitpin.js +11 -0
  70. package/js/src/src/abstract/bitrue.d.ts +75 -0
  71. package/js/src/src/abstract/bitrue.js +11 -0
  72. package/js/src/src/abstract/bitso.d.ts +46 -0
  73. package/js/src/src/abstract/bitso.js +11 -0
  74. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  75. package/js/src/src/abstract/bitstamp.js +11 -0
  76. package/js/src/src/abstract/bitteam.d.ts +32 -0
  77. package/js/src/src/abstract/bitteam.js +11 -0
  78. package/js/src/src/abstract/bittrade.d.ts +117 -0
  79. package/js/src/src/abstract/bittrade.js +11 -0
  80. package/js/src/src/abstract/bitunix.d.ts +9 -0
  81. package/js/src/src/abstract/bitunix.js +11 -0
  82. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  83. package/js/src/src/abstract/bitvavo.js +11 -0
  84. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  85. package/js/src/src/abstract/blockchaincom.js +11 -0
  86. package/js/src/src/abstract/blofin.d.ts +70 -0
  87. package/js/src/src/abstract/blofin.js +11 -0
  88. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  89. package/js/src/src/abstract/btcalpha.js +11 -0
  90. package/js/src/src/abstract/btcbox.d.ts +18 -0
  91. package/js/src/src/abstract/btcbox.js +11 -0
  92. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  93. package/js/src/src/abstract/btcmarkets.js +11 -0
  94. package/js/src/src/abstract/btcturk.d.ts +23 -0
  95. package/js/src/src/abstract/btcturk.js +11 -0
  96. package/js/src/src/abstract/bybit.d.ts +316 -0
  97. package/js/src/src/abstract/bybit.js +11 -0
  98. package/js/src/src/abstract/bydfi.d.ts +11 -0
  99. package/js/src/src/abstract/bydfi.js +11 -0
  100. package/js/src/src/abstract/cafearz.d.ts +8 -0
  101. package/js/src/src/abstract/cafearz.js +11 -0
  102. package/js/src/src/abstract/cex.d.ts +35 -0
  103. package/js/src/src/abstract/cex.js +11 -0
  104. package/js/src/src/abstract/coinbase.d.ts +97 -0
  105. package/js/src/src/abstract/coinbase.js +11 -0
  106. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  107. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  108. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  109. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  110. package/js/src/src/abstract/coincatch.d.ts +97 -0
  111. package/js/src/src/abstract/coincatch.js +11 -0
  112. package/js/src/src/abstract/coincheck.d.ts +36 -0
  113. package/js/src/src/abstract/coincheck.js +11 -0
  114. package/js/src/src/abstract/coinex.d.ts +240 -0
  115. package/js/src/src/abstract/coinex.js +11 -0
  116. package/js/src/src/abstract/coinmate.d.ts +65 -0
  117. package/js/src/src/abstract/coinmate.js +11 -0
  118. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  119. package/js/src/src/abstract/coinmetro.js +11 -0
  120. package/js/src/src/abstract/coinone.d.ts +70 -0
  121. package/js/src/src/abstract/coinone.js +11 -0
  122. package/js/src/src/abstract/coinsph.d.ts +57 -0
  123. package/js/src/src/abstract/coinsph.js +11 -0
  124. package/js/src/src/abstract/coinspot.d.ts +31 -0
  125. package/js/src/src/abstract/coinspot.js +11 -0
  126. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  127. package/js/src/src/abstract/cryptocom.js +11 -0
  128. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  129. package/js/src/src/abstract/cryptomus.js +11 -0
  130. package/js/src/src/abstract/defx.d.ts +72 -0
  131. package/js/src/src/abstract/defx.js +11 -0
  132. package/js/src/src/abstract/delta.d.ts +53 -0
  133. package/js/src/src/abstract/delta.js +11 -0
  134. package/js/src/src/abstract/deribit.d.ts +129 -0
  135. package/js/src/src/abstract/deribit.js +11 -0
  136. package/js/src/src/abstract/derive.d.ts +120 -0
  137. package/js/src/src/abstract/derive.js +11 -0
  138. package/js/src/src/abstract/digifinex.d.ts +95 -0
  139. package/js/src/src/abstract/digifinex.js +11 -0
  140. package/js/src/src/abstract/ellipx.d.ts +28 -0
  141. package/js/src/src/abstract/ellipx.js +11 -0
  142. package/js/src/src/abstract/eterex.d.ts +8 -0
  143. package/js/src/src/abstract/eterex.js +11 -0
  144. package/js/src/src/abstract/excoino.d.ts +10 -0
  145. package/js/src/src/abstract/excoino.js +11 -0
  146. package/js/src/src/abstract/exir.d.ts +11 -0
  147. package/js/src/src/abstract/exir.js +11 -0
  148. package/js/src/src/abstract/exmo.d.ts +58 -0
  149. package/js/src/src/abstract/exmo.js +11 -0
  150. package/js/src/src/abstract/exnovin.d.ts +9 -0
  151. package/js/src/src/abstract/exnovin.js +11 -0
  152. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  153. package/js/src/src/abstract/farhadexchange.js +11 -0
  154. package/js/src/src/abstract/foxbit.d.ts +29 -0
  155. package/js/src/src/abstract/foxbit.js +11 -0
  156. package/js/src/src/abstract/gate.d.ts +287 -0
  157. package/js/src/src/abstract/gate.js +11 -0
  158. package/js/src/src/abstract/gemini.d.ts +62 -0
  159. package/js/src/src/abstract/gemini.js +11 -0
  160. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  161. package/js/src/src/abstract/hamtapay.js +11 -0
  162. package/js/src/src/abstract/hashkey.d.ts +70 -0
  163. package/js/src/src/abstract/hashkey.js +11 -0
  164. package/js/src/src/abstract/hibachi.d.ts +29 -0
  165. package/js/src/src/abstract/hibachi.js +11 -0
  166. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  167. package/js/src/src/abstract/hitbtc.js +11 -0
  168. package/js/src/src/abstract/hitobit.d.ts +11 -0
  169. package/js/src/src/abstract/hitobit.js +11 -0
  170. package/js/src/src/abstract/hollaex.d.ts +36 -0
  171. package/js/src/src/abstract/hollaex.js +11 -0
  172. package/js/src/src/abstract/htx.d.ts +551 -0
  173. package/js/src/src/abstract/htx.js +11 -0
  174. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  175. package/js/src/src/abstract/hyperliquid.js +11 -0
  176. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  177. package/js/src/src/abstract/independentreserve.js +11 -0
  178. package/js/src/src/abstract/indodax.d.ts +29 -0
  179. package/js/src/src/abstract/indodax.js +11 -0
  180. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  181. package/js/src/src/abstract/iranexchange.js +11 -0
  182. package/js/src/src/abstract/jibitex.d.ts +10 -0
  183. package/js/src/src/abstract/jibitex.js +11 -0
  184. package/js/src/src/abstract/kcex.d.ts +10 -0
  185. package/js/src/src/abstract/kcex.js +11 -0
  186. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  187. package/js/src/src/abstract/kifpoolme.js +11 -0
  188. package/js/src/src/abstract/kraken.d.ts +61 -0
  189. package/js/src/src/abstract/kraken.js +11 -0
  190. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  191. package/js/src/src/abstract/krakenfutures.js +11 -0
  192. package/js/src/src/abstract/kucoin.d.ts +227 -0
  193. package/js/src/src/abstract/kucoin.js +11 -0
  194. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  195. package/js/src/src/abstract/kucoinfutures.js +11 -0
  196. package/js/src/src/abstract/latoken.d.ts +59 -0
  197. package/js/src/src/abstract/latoken.js +11 -0
  198. package/js/src/src/abstract/lbank.d.ts +65 -0
  199. package/js/src/src/abstract/lbank.js +11 -0
  200. package/js/src/src/abstract/luno.d.ts +41 -0
  201. package/js/src/src/abstract/luno.js +11 -0
  202. package/js/src/src/abstract/mazdax.d.ts +11 -0
  203. package/js/src/src/abstract/mazdax.js +11 -0
  204. package/js/src/src/abstract/mercado.d.ts +28 -0
  205. package/js/src/src/abstract/mercado.js +11 -0
  206. package/js/src/src/abstract/mexc.d.ts +183 -0
  207. package/js/src/src/abstract/mexc.js +11 -0
  208. package/js/src/src/abstract/modetrade.d.ts +122 -0
  209. package/js/src/src/abstract/modetrade.js +11 -0
  210. package/js/src/src/abstract/ndax.d.ts +100 -0
  211. package/js/src/src/abstract/ndax.js +11 -0
  212. package/js/src/src/abstract/nobitex.d.ts +10 -0
  213. package/js/src/src/abstract/nobitex.js +11 -0
  214. package/js/src/src/abstract/novadax.d.ts +32 -0
  215. package/js/src/src/abstract/novadax.js +11 -0
  216. package/js/src/src/abstract/oceanex.d.ts +30 -0
  217. package/js/src/src/abstract/oceanex.js +11 -0
  218. package/js/src/src/abstract/okcoin.d.ts +77 -0
  219. package/js/src/src/abstract/okcoin.js +11 -0
  220. package/js/src/src/abstract/okexchange.d.ts +11 -0
  221. package/js/src/src/abstract/okexchange.js +11 -0
  222. package/js/src/src/abstract/okx.d.ts +352 -0
  223. package/js/src/src/abstract/okx.js +11 -0
  224. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  225. package/js/src/src/abstract/ompfinex.js +11 -0
  226. package/js/src/src/abstract/onetrading.d.ts +26 -0
  227. package/js/src/src/abstract/onetrading.js +11 -0
  228. package/js/src/src/abstract/oxfun.d.ts +37 -0
  229. package/js/src/src/abstract/oxfun.js +11 -0
  230. package/js/src/src/abstract/p2b.d.ts +25 -0
  231. package/js/src/src/abstract/p2b.js +11 -0
  232. package/js/src/src/abstract/paradex.d.ts +66 -0
  233. package/js/src/src/abstract/paradex.js +11 -0
  234. package/js/src/src/abstract/paymium.d.ts +31 -0
  235. package/js/src/src/abstract/paymium.js +11 -0
  236. package/js/src/src/abstract/phemex.d.ts +120 -0
  237. package/js/src/src/abstract/phemex.js +11 -0
  238. package/js/src/src/abstract/pingi.d.ts +9 -0
  239. package/js/src/src/abstract/pingi.js +11 -0
  240. package/js/src/src/abstract/poloniex.d.ts +108 -0
  241. package/js/src/src/abstract/poloniex.js +11 -0
  242. package/js/src/src/abstract/pooleno.d.ts +8 -0
  243. package/js/src/src/abstract/pooleno.js +11 -0
  244. package/js/src/src/abstract/probit.d.ts +26 -0
  245. package/js/src/src/abstract/probit.js +11 -0
  246. package/js/src/src/abstract/raastin.d.ts +11 -0
  247. package/js/src/src/abstract/raastin.js +11 -0
  248. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  249. package/js/src/src/abstract/ramzinex.js +11 -0
  250. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  251. package/js/src/src/abstract/sarmayex.js +11 -0
  252. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  253. package/js/src/src/abstract/sarrafex.js +11 -0
  254. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  255. package/js/src/src/abstract/tabdeal.js +11 -0
  256. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  257. package/js/src/src/abstract/tehran_exchange.js +11 -0
  258. package/js/src/src/abstract/tetherland.d.ts +8 -0
  259. package/js/src/src/abstract/tetherland.js +11 -0
  260. package/js/src/src/abstract/timex.d.ts +65 -0
  261. package/js/src/src/abstract/timex.js +11 -0
  262. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  263. package/js/src/src/abstract/tokocrypto.js +11 -0
  264. package/js/src/src/abstract/toobit.d.ts +10 -0
  265. package/js/src/src/abstract/toobit.js +11 -0
  266. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  267. package/js/src/src/abstract/tradeogre.js +11 -0
  268. package/js/src/src/abstract/twox.d.ts +8 -0
  269. package/js/src/src/abstract/twox.js +11 -0
  270. package/js/src/src/abstract/ubitex.d.ts +10 -0
  271. package/js/src/src/abstract/ubitex.js +11 -0
  272. package/js/src/src/abstract/upbit.d.ts +58 -0
  273. package/js/src/src/abstract/upbit.js +11 -0
  274. package/js/src/src/abstract/vertex.d.ts +22 -0
  275. package/js/src/src/abstract/vertex.js +11 -0
  276. package/js/src/src/abstract/wallex.d.ts +11 -0
  277. package/js/src/src/abstract/wallex.js +11 -0
  278. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  279. package/js/src/src/abstract/wavesexchange.js +11 -0
  280. package/js/src/src/abstract/whitebit.d.ts +117 -0
  281. package/js/src/src/abstract/whitebit.js +11 -0
  282. package/js/src/src/abstract/woo.d.ts +144 -0
  283. package/js/src/src/abstract/woo.js +11 -0
  284. package/js/src/src/abstract/woofipro.d.ts +122 -0
  285. package/js/src/src/abstract/woofipro.js +11 -0
  286. package/js/src/src/abstract/xt.d.ts +160 -0
  287. package/js/src/src/abstract/xt.js +11 -0
  288. package/js/src/src/abstract/yobit.d.ts +19 -0
  289. package/js/src/src/abstract/yobit.js +11 -0
  290. package/js/src/src/abstract/zaif.d.ts +41 -0
  291. package/js/src/src/abstract/zaif.js +11 -0
  292. package/js/src/src/abstract/zonda.d.ts +56 -0
  293. package/js/src/src/abstract/zonda.js +11 -0
  294. package/js/src/src/afratether.d.ts +21 -0
  295. package/js/src/src/afratether.js +356 -0
  296. package/js/src/src/alpaca.d.ts +332 -0
  297. package/js/src/src/alpaca.js +1908 -0
  298. package/js/src/src/apex.d.ts +333 -0
  299. package/js/src/src/apex.js +1942 -0
  300. package/js/src/src/arzinja.d.ts +21 -0
  301. package/js/src/src/arzinja.js +298 -0
  302. package/js/src/src/arzplus.d.ts +26 -0
  303. package/js/src/src/arzplus.js +581 -0
  304. package/js/src/src/ascendex.d.ts +424 -0
  305. package/js/src/src/ascendex.js +3699 -0
  306. package/js/src/src/asretether.d.ts +21 -0
  307. package/js/src/src/asretether.js +324 -0
  308. package/js/src/src/base/Exchange.d.ts +926 -0
  309. package/js/src/src/base/Exchange.js +7399 -0
  310. package/js/src/src/base/Precise.d.ts +42 -0
  311. package/js/src/src/base/Precise.js +275 -0
  312. package/js/src/src/base/errors.d.ts +168 -0
  313. package/js/src/src/base/errors.js +255 -0
  314. package/js/src/src/base/functions/crypto.d.ts +16 -0
  315. package/js/src/src/base/functions/crypto.js +131 -0
  316. package/js/src/src/base/functions/encode.d.ts +4 -0
  317. package/js/src/src/base/functions/encode.js +32 -0
  318. package/js/src/src/base/functions/generic.d.ts +29 -0
  319. package/js/src/src/base/functions/generic.js +203 -0
  320. package/js/src/src/base/functions/misc.d.ts +9 -0
  321. package/js/src/src/base/functions/misc.js +101 -0
  322. package/js/src/src/base/functions/number.d.ts +27 -0
  323. package/js/src/src/base/functions/number.js +313 -0
  324. package/js/src/src/base/functions/platform.d.ts +7 -0
  325. package/js/src/src/base/functions/platform.js +27 -0
  326. package/js/src/src/base/functions/rsa.d.ts +5 -0
  327. package/js/src/src/base/functions/rsa.js +49 -0
  328. package/js/src/src/base/functions/string.d.ts +7 -0
  329. package/js/src/src/base/functions/string.js +44 -0
  330. package/js/src/src/base/functions/throttle.d.ts +6 -0
  331. package/js/src/src/base/functions/throttle.js +67 -0
  332. package/js/src/src/base/functions/time.d.ts +21 -0
  333. package/js/src/src/base/functions/time.js +171 -0
  334. package/js/src/src/base/functions/totp.d.ts +3 -0
  335. package/js/src/src/base/functions/totp.js +25 -0
  336. package/js/src/src/base/functions/type.d.ts +37 -0
  337. package/js/src/src/base/functions/type.js +179 -0
  338. package/js/src/src/base/functions.d.ts +10 -0
  339. package/js/src/src/base/functions.js +18 -0
  340. package/js/src/src/base/types.d.ts +586 -0
  341. package/js/src/src/base/types.js +7 -0
  342. package/js/src/src/base/ws/Cache.d.ts +27 -0
  343. package/js/src/src/base/ws/Cache.js +260 -0
  344. package/js/src/src/base/ws/Client.d.ts +53 -0
  345. package/js/src/src/base/ws/Client.js +307 -0
  346. package/js/src/src/base/ws/Future.d.ts +8 -0
  347. package/js/src/src/base/ws/Future.js +35 -0
  348. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  349. package/js/src/src/base/ws/OrderBook.js +130 -0
  350. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  351. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  352. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  353. package/js/src/src/base/ws/WsClient.js +69 -0
  354. package/js/src/src/bequant.d.ts +4 -0
  355. package/js/src/src/bequant.js +35 -0
  356. package/js/src/src/bidarz.d.ts +16 -0
  357. package/js/src/src/bidarz.js +327 -0
  358. package/js/src/src/bigone.d.ts +296 -0
  359. package/js/src/src/bigone.js +2340 -0
  360. package/js/src/src/binance.d.ts +1667 -0
  361. package/js/src/src/binance.js +14400 -0
  362. package/js/src/src/binancecoinm.d.ts +6 -0
  363. package/js/src/src/binancecoinm.js +51 -0
  364. package/js/src/src/binanceus.d.ts +4 -0
  365. package/js/src/src/binanceus.js +225 -0
  366. package/js/src/src/binanceusdm.d.ts +6 -0
  367. package/js/src/src/binanceusdm.js +63 -0
  368. package/js/src/src/bingx.d.ts +778 -0
  369. package/js/src/src/bingx.js +6705 -0
  370. package/js/src/src/bit24.d.ts +24 -0
  371. package/js/src/src/bit24.js +520 -0
  372. package/js/src/src/bit2c.d.ts +146 -0
  373. package/js/src/src/bit2c.js +1029 -0
  374. package/js/src/src/bitbank.d.ts +181 -0
  375. package/js/src/src/bitbank.js +1146 -0
  376. package/js/src/src/bitbarg.d.ts +21 -0
  377. package/js/src/src/bitbarg.js +312 -0
  378. package/js/src/src/bitbns.d.ts +184 -0
  379. package/js/src/src/bitbns.js +1288 -0
  380. package/js/src/src/bitfinex.d.ts +516 -0
  381. package/js/src/src/bitfinex.js +3951 -0
  382. package/js/src/src/bitflyer.d.ts +229 -0
  383. package/js/src/src/bitflyer.js +1209 -0
  384. package/js/src/src/bitget.d.ts +1109 -0
  385. package/js/src/src/bitget.js +11033 -0
  386. package/js/src/src/bithumb.d.ts +165 -0
  387. package/js/src/src/bithumb.js +1257 -0
  388. package/js/src/src/bitimen.d.ts +23 -0
  389. package/js/src/src/bitimen.js +424 -0
  390. package/js/src/src/bitir.d.ts +23 -0
  391. package/js/src/src/bitir.js +521 -0
  392. package/js/src/src/bitmart.d.ts +736 -0
  393. package/js/src/src/bitmart.js +5639 -0
  394. package/js/src/src/bitmex.d.ts +395 -0
  395. package/js/src/src/bitmex.js +3088 -0
  396. package/js/src/src/bitopro.d.ts +295 -0
  397. package/js/src/src/bitopro.js +1892 -0
  398. package/js/src/src/bitpin.d.ts +23 -0
  399. package/js/src/src/bitpin.js +487 -0
  400. package/js/src/src/bitrue.d.ts +384 -0
  401. package/js/src/src/bitrue.js +3382 -0
  402. package/js/src/src/bitso.d.ts +270 -0
  403. package/js/src/src/bitso.js +1881 -0
  404. package/js/src/src/bitstamp.d.ts +355 -0
  405. package/js/src/src/bitstamp.js +2445 -0
  406. package/js/src/src/bitteam.d.ts +229 -0
  407. package/js/src/src/bitteam.js +2420 -0
  408. package/js/src/src/bittrade.d.ts +298 -0
  409. package/js/src/src/bittrade.js +2050 -0
  410. package/js/src/src/bitunix.d.ts +21 -0
  411. package/js/src/src/bitunix.js +326 -0
  412. package/js/src/src/bitvavo.d.ts +311 -0
  413. package/js/src/src/bitvavo.js +2204 -0
  414. package/js/src/src/blockchaincom.d.ts +256 -0
  415. package/js/src/src/blockchaincom.js +1259 -0
  416. package/js/src/src/blofin.d.ts +439 -0
  417. package/js/src/src/blofin.js +2576 -0
  418. package/js/src/src/btcalpha.d.ts +209 -0
  419. package/js/src/src/btcalpha.js +1056 -0
  420. package/js/src/src/btcbox.d.ts +144 -0
  421. package/js/src/src/btcbox.js +834 -0
  422. package/js/src/src/btcmarkets.d.ts +253 -0
  423. package/js/src/src/btcmarkets.js +1418 -0
  424. package/js/src/src/btcturk.d.ts +161 -0
  425. package/js/src/src/btcturk.js +1058 -0
  426. package/js/src/src/bybit.d.ts +1097 -0
  427. package/js/src/src/bybit.js +9382 -0
  428. package/js/src/src/bydfi.d.ts +23 -0
  429. package/js/src/src/bydfi.js +434 -0
  430. package/js/src/src/cafearz.d.ts +21 -0
  431. package/js/src/src/cafearz.js +346 -0
  432. package/js/src/src/cex.d.ts +286 -0
  433. package/js/src/src/cex.js +1799 -0
  434. package/js/src/src/coinbase.d.ts +623 -0
  435. package/js/src/src/coinbase.js +5220 -0
  436. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  437. package/js/src/src/coinbaseadvanced.js +18 -0
  438. package/js/src/src/coinbaseexchange.d.ts +334 -0
  439. package/js/src/src/coinbaseexchange.js +2127 -0
  440. package/js/src/src/coinbaseinternational.d.ts +443 -0
  441. package/js/src/src/coinbaseinternational.js +2336 -0
  442. package/js/src/src/coincatch.d.ts +786 -0
  443. package/js/src/src/coincatch.js +5492 -0
  444. package/js/src/src/coincheck.d.ts +147 -0
  445. package/js/src/src/coincheck.js +962 -0
  446. package/js/src/src/coinex.d.ts +719 -0
  447. package/js/src/src/coinex.js +6166 -0
  448. package/js/src/src/coinmate.d.ts +202 -0
  449. package/js/src/src/coinmate.js +1215 -0
  450. package/js/src/src/coinmetro.d.ts +244 -0
  451. package/js/src/src/coinmetro.js +2024 -0
  452. package/js/src/src/coinone.d.ts +158 -0
  453. package/js/src/src/coinone.js +1278 -0
  454. package/js/src/src/coinsph.d.ts +310 -0
  455. package/js/src/src/coinsph.js +2203 -0
  456. package/js/src/src/coinspot.d.ts +108 -0
  457. package/js/src/src/coinspot.js +653 -0
  458. package/js/src/src/cryptocom.d.ts +463 -0
  459. package/js/src/src/cryptocom.js +3549 -0
  460. package/js/src/src/cryptomus.d.ts +158 -0
  461. package/js/src/src/cryptomus.js +1169 -0
  462. package/js/src/src/defx.d.ts +348 -0
  463. package/js/src/src/defx.js +2139 -0
  464. package/js/src/src/delta.d.ts +407 -0
  465. package/js/src/src/delta.js +3654 -0
  466. package/js/src/src/deribit.d.ts +516 -0
  467. package/js/src/src/deribit.js +3790 -0
  468. package/js/src/src/derive.d.ts +324 -0
  469. package/js/src/src/derive.js +2655 -0
  470. package/js/src/src/digifinex.d.ts +544 -0
  471. package/js/src/src/digifinex.js +4453 -0
  472. package/js/src/src/ellipx.d.ts +237 -0
  473. package/js/src/src/ellipx.js +2071 -0
  474. package/js/src/src/eterex.d.ts +21 -0
  475. package/js/src/src/eterex.js +299 -0
  476. package/js/src/src/excoino.d.ts +23 -0
  477. package/js/src/src/excoino.js +426 -0
  478. package/js/src/src/exir.d.ts +23 -0
  479. package/js/src/src/exir.js +403 -0
  480. package/js/src/src/exmo.d.ts +426 -0
  481. package/js/src/src/exmo.js +2825 -0
  482. package/js/src/src/exnovin.d.ts +22 -0
  483. package/js/src/src/exnovin.js +378 -0
  484. package/js/src/src/farhadexchange.d.ts +21 -0
  485. package/js/src/src/farhadexchange.js +280 -0
  486. package/js/src/src/fmfwio.d.ts +4 -0
  487. package/js/src/src/fmfwio.js +35 -0
  488. package/js/src/src/foxbit.d.ts +352 -0
  489. package/js/src/src/foxbit.js +2016 -0
  490. package/js/src/src/gate.d.ts +1071 -0
  491. package/js/src/src/gate.js +8282 -0
  492. package/js/src/src/gateio.d.ts +4 -0
  493. package/js/src/src/gateio.js +17 -0
  494. package/js/src/src/gemini.d.ts +257 -0
  495. package/js/src/src/gemini.js +2006 -0
  496. package/js/src/src/hamtapay.d.ts +21 -0
  497. package/js/src/src/hamtapay.js +303 -0
  498. package/js/src/src/hashkey.d.ts +628 -0
  499. package/js/src/src/hashkey.js +4363 -0
  500. package/js/src/src/hibachi.d.ts +346 -0
  501. package/js/src/src/hibachi.js +2137 -0
  502. package/js/src/src/hitbtc.d.ts +558 -0
  503. package/js/src/src/hitbtc.js +3847 -0
  504. package/js/src/src/hitobit.d.ts +23 -0
  505. package/js/src/src/hitobit.js +412 -0
  506. package/js/src/src/hollaex.d.ts +305 -0
  507. package/js/src/src/hollaex.js +2046 -0
  508. package/js/src/src/htx.d.ts +961 -0
  509. package/js/src/src/htx.js +9668 -0
  510. package/js/src/src/huobi.d.ts +4 -0
  511. package/js/src/src/huobi.js +17 -0
  512. package/js/src/src/hyperliquid.d.ts +651 -0
  513. package/js/src/src/hyperliquid.js +3937 -0
  514. package/js/src/src/independentreserve.d.ts +169 -0
  515. package/js/src/src/independentreserve.js +1115 -0
  516. package/js/src/src/indodax.d.ts +217 -0
  517. package/js/src/src/indodax.js +1454 -0
  518. package/js/src/src/iranexchange.d.ts +21 -0
  519. package/js/src/src/iranexchange.js +399 -0
  520. package/js/src/src/jibitex.d.ts +23 -0
  521. package/js/src/src/jibitex.js +416 -0
  522. package/js/src/src/kcex.d.ts +21 -0
  523. package/js/src/src/kcex.js +335 -0
  524. package/js/src/src/kifpoolme.d.ts +23 -0
  525. package/js/src/src/kifpoolme.js +410 -0
  526. package/js/src/src/kraken.d.ts +484 -0
  527. package/js/src/src/kraken.js +3518 -0
  528. package/js/src/src/krakenfutures.d.ts +362 -0
  529. package/js/src/src/krakenfutures.js +2885 -0
  530. package/js/src/src/kucoin.d.ts +759 -0
  531. package/js/src/src/kucoin.js +5153 -0
  532. package/js/src/src/kucoinfutures.d.ts +521 -0
  533. package/js/src/src/kucoinfutures.js +3381 -0
  534. package/js/src/src/latoken.d.ts +274 -0
  535. package/js/src/src/latoken.js +1824 -0
  536. package/js/src/src/lbank.d.ts +350 -0
  537. package/js/src/src/lbank.js +3146 -0
  538. package/js/src/src/luno.d.ts +252 -0
  539. package/js/src/src/luno.js +1479 -0
  540. package/js/src/src/mazdax.d.ts +23 -0
  541. package/js/src/src/mazdax.js +534 -0
  542. package/js/src/src/mercado.d.ts +160 -0
  543. package/js/src/src/mercado.js +1011 -0
  544. package/js/src/src/mexc.d.ts +768 -0
  545. package/js/src/src/mexc.js +6102 -0
  546. package/js/src/src/modetrade.d.ts +496 -0
  547. package/js/src/src/modetrade.js +2936 -0
  548. package/js/src/src/myokx.d.ts +4 -0
  549. package/js/src/src/myokx.js +54 -0
  550. package/js/src/src/ndax.d.ts +285 -0
  551. package/js/src/src/ndax.js +2598 -0
  552. package/js/src/src/nobitex.d.ts +23 -0
  553. package/js/src/src/nobitex.js +454 -0
  554. package/js/src/src/novadax.d.ts +279 -0
  555. package/js/src/src/novadax.js +1676 -0
  556. package/js/src/src/oceanex.d.ts +231 -0
  557. package/js/src/src/oceanex.js +1123 -0
  558. package/js/src/src/okcoin.d.ts +346 -0
  559. package/js/src/src/okcoin.js +3211 -0
  560. package/js/src/src/okexchange.d.ts +23 -0
  561. package/js/src/src/okexchange.js +373 -0
  562. package/js/src/src/okx.d.ts +1125 -0
  563. package/js/src/src/okx.js +9009 -0
  564. package/js/src/src/okxus.d.ts +4 -0
  565. package/js/src/src/okxus.js +54 -0
  566. package/js/src/src/ompfinex.d.ts +23 -0
  567. package/js/src/src/ompfinex.js +510 -0
  568. package/js/src/src/onetrading.d.ts +228 -0
  569. package/js/src/src/onetrading.js +1769 -0
  570. package/js/src/src/oxfun.d.ts +442 -0
  571. package/js/src/src/oxfun.js +2920 -0
  572. package/js/src/src/p2b.d.ts +189 -0
  573. package/js/src/src/p2b.js +1344 -0
  574. package/js/src/src/paradex.d.ts +389 -0
  575. package/js/src/src/paradex.js +2607 -0
  576. package/js/src/src/paymium.d.ts +133 -0
  577. package/js/src/src/paymium.js +644 -0
  578. package/js/src/src/phemex.d.ts +497 -0
  579. package/js/src/src/phemex.js +5333 -0
  580. package/js/src/src/pingi.d.ts +22 -0
  581. package/js/src/src/pingi.js +446 -0
  582. package/js/src/src/poloniex.d.ts +441 -0
  583. package/js/src/src/poloniex.js +3681 -0
  584. package/js/src/src/pooleno.d.ts +21 -0
  585. package/js/src/src/pooleno.js +347 -0
  586. package/js/src/src/pro/alpaca.d.ts +95 -0
  587. package/js/src/src/pro/alpaca.js +724 -0
  588. package/js/src/src/pro/apex.d.ts +160 -0
  589. package/js/src/src/pro/apex.js +1044 -0
  590. package/js/src/src/pro/ascendex.d.ts +99 -0
  591. package/js/src/src/pro/ascendex.js +1012 -0
  592. package/js/src/src/pro/bequant.d.ts +4 -0
  593. package/js/src/src/pro/bequant.js +42 -0
  594. package/js/src/src/pro/binance.d.ts +796 -0
  595. package/js/src/src/pro/binance.js +4373 -0
  596. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  597. package/js/src/src/pro/binancecoinm.js +32 -0
  598. package/js/src/src/pro/binanceus.d.ts +4 -0
  599. package/js/src/src/pro/binanceus.js +52 -0
  600. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  601. package/js/src/src/pro/binanceusdm.js +37 -0
  602. package/js/src/src/pro/bingx.d.ts +151 -0
  603. package/js/src/src/pro/bingx.js +1568 -0
  604. package/js/src/src/pro/bitfinex.d.ts +99 -0
  605. package/js/src/src/pro/bitfinex.js +1165 -0
  606. package/js/src/src/pro/bitget.d.ts +257 -0
  607. package/js/src/src/pro/bitget.js +2327 -0
  608. package/js/src/src/pro/bithumb.d.ts +59 -0
  609. package/js/src/src/pro/bithumb.js +395 -0
  610. package/js/src/src/pro/bitmart.d.ts +168 -0
  611. package/js/src/src/pro/bitmart.js +1686 -0
  612. package/js/src/src/pro/bitmex.d.ts +170 -0
  613. package/js/src/src/pro/bitmex.js +1760 -0
  614. package/js/src/src/pro/bitopro.d.ts +69 -0
  615. package/js/src/src/pro/bitopro.js +477 -0
  616. package/js/src/src/pro/bitrue.d.ts +40 -0
  617. package/js/src/src/pro/bitrue.js +461 -0
  618. package/js/src/src/pro/bitstamp.d.ts +53 -0
  619. package/js/src/src/pro/bitstamp.js +587 -0
  620. package/js/src/src/pro/bittrade.d.ts +66 -0
  621. package/js/src/src/pro/bittrade.js +606 -0
  622. package/js/src/src/pro/bitvavo.d.ts +321 -0
  623. package/js/src/src/pro/bitvavo.js +1451 -0
  624. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  625. package/js/src/src/pro/blockchaincom.js +777 -0
  626. package/js/src/src/pro/blofin.d.ts +174 -0
  627. package/js/src/src/pro/blofin.js +743 -0
  628. package/js/src/src/pro/bybit.d.ts +397 -0
  629. package/js/src/src/pro/bybit.js +2519 -0
  630. package/js/src/src/pro/cex.d.ts +220 -0
  631. package/js/src/src/pro/cex.js +1535 -0
  632. package/js/src/src/pro/coinbase.d.ts +119 -0
  633. package/js/src/src/pro/coinbase.js +736 -0
  634. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  635. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  636. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  637. package/js/src/src/pro/coinbaseexchange.js +969 -0
  638. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  639. package/js/src/src/pro/coinbaseinternational.js +804 -0
  640. package/js/src/src/pro/coincatch.d.ts +207 -0
  641. package/js/src/src/pro/coincatch.js +1562 -0
  642. package/js/src/src/pro/coincheck.d.ts +33 -0
  643. package/js/src/src/pro/coincheck.js +210 -0
  644. package/js/src/src/pro/coinex.d.ts +147 -0
  645. package/js/src/src/pro/coinex.js +1426 -0
  646. package/js/src/src/pro/coinone.d.ts +51 -0
  647. package/js/src/src/pro/coinone.js +413 -0
  648. package/js/src/src/pro/cryptocom.d.ts +300 -0
  649. package/js/src/src/pro/cryptocom.js +1414 -0
  650. package/js/src/src/pro/defx.d.ts +236 -0
  651. package/js/src/src/pro/defx.js +865 -0
  652. package/js/src/src/pro/deribit.d.ts +163 -0
  653. package/js/src/src/pro/deribit.js +1066 -0
  654. package/js/src/src/pro/derive.d.ts +100 -0
  655. package/js/src/src/pro/derive.js +753 -0
  656. package/js/src/src/pro/exmo.d.ts +97 -0
  657. package/js/src/src/pro/exmo.js +903 -0
  658. package/js/src/src/pro/gate.d.ts +360 -0
  659. package/js/src/src/pro/gate.js +2119 -0
  660. package/js/src/src/pro/gateio.d.ts +4 -0
  661. package/js/src/src/pro/gateio.js +17 -0
  662. package/js/src/src/pro/gemini.d.ts +106 -0
  663. package/js/src/src/pro/gemini.js +932 -0
  664. package/js/src/src/pro/hashkey.d.ts +121 -0
  665. package/js/src/src/pro/hashkey.js +843 -0
  666. package/js/src/src/pro/hitbtc.d.ts +235 -0
  667. package/js/src/src/pro/hitbtc.js +1400 -0
  668. package/js/src/src/pro/hollaex.d.ts +77 -0
  669. package/js/src/src/pro/hollaex.js +604 -0
  670. package/js/src/src/pro/htx.d.ts +141 -0
  671. package/js/src/src/pro/htx.js +2415 -0
  672. package/js/src/src/pro/huobi.d.ts +4 -0
  673. package/js/src/src/pro/huobi.js +17 -0
  674. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  675. package/js/src/src/pro/hyperliquid.js +1126 -0
  676. package/js/src/src/pro/independentreserve.d.ts +36 -0
  677. package/js/src/src/pro/independentreserve.js +287 -0
  678. package/js/src/src/pro/kraken.d.ts +233 -0
  679. package/js/src/src/pro/kraken.js +1785 -0
  680. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  681. package/js/src/src/pro/krakenfutures.js +1592 -0
  682. package/js/src/src/pro/kucoin.d.ts +221 -0
  683. package/js/src/src/pro/kucoin.js +1430 -0
  684. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  685. package/js/src/src/pro/kucoinfutures.js +1295 -0
  686. package/js/src/src/pro/lbank.d.ts +134 -0
  687. package/js/src/src/pro/lbank.js +950 -0
  688. package/js/src/src/pro/luno.d.ts +44 -0
  689. package/js/src/src/pro/luno.js +322 -0
  690. package/js/src/src/pro/mexc.d.ts +210 -0
  691. package/js/src/src/pro/mexc.js +2009 -0
  692. package/js/src/src/pro/modetrade.d.ts +155 -0
  693. package/js/src/src/pro/modetrade.js +1335 -0
  694. package/js/src/src/pro/myokx.d.ts +4 -0
  695. package/js/src/src/pro/myokx.js +39 -0
  696. package/js/src/src/pro/ndax.d.ts +60 -0
  697. package/js/src/src/pro/ndax.js +545 -0
  698. package/js/src/src/pro/okcoin.d.ts +91 -0
  699. package/js/src/src/pro/okcoin.js +763 -0
  700. package/js/src/src/pro/okx.d.ts +408 -0
  701. package/js/src/src/pro/okx.js +2479 -0
  702. package/js/src/src/pro/okxus.d.ts +4 -0
  703. package/js/src/src/pro/okxus.js +39 -0
  704. package/js/src/src/pro/onetrading.d.ts +107 -0
  705. package/js/src/src/pro/onetrading.js +1343 -0
  706. package/js/src/src/pro/oxfun.d.ts +234 -0
  707. package/js/src/src/pro/oxfun.js +1112 -0
  708. package/js/src/src/pro/p2b.d.ts +104 -0
  709. package/js/src/src/pro/p2b.js +506 -0
  710. package/js/src/src/pro/paradex.d.ts +54 -0
  711. package/js/src/src/pro/paradex.js +370 -0
  712. package/js/src/src/pro/phemex.d.ts +129 -0
  713. package/js/src/src/pro/phemex.js +1569 -0
  714. package/js/src/src/pro/poloniex.d.ts +214 -0
  715. package/js/src/src/pro/poloniex.js +1318 -0
  716. package/js/src/src/pro/probit.d.ts +91 -0
  717. package/js/src/src/pro/probit.js +593 -0
  718. package/js/src/src/pro/tradeogre.d.ts +49 -0
  719. package/js/src/src/pro/tradeogre.js +284 -0
  720. package/js/src/src/pro/upbit.d.ts +124 -0
  721. package/js/src/src/pro/upbit.js +689 -0
  722. package/js/src/src/pro/vertex.d.ts +104 -0
  723. package/js/src/src/pro/vertex.js +999 -0
  724. package/js/src/src/pro/whitebit.d.ts +123 -0
  725. package/js/src/src/pro/whitebit.js +971 -0
  726. package/js/src/src/pro/woo.d.ts +161 -0
  727. package/js/src/src/pro/woo.js +1351 -0
  728. package/js/src/src/pro/woofipro.d.ts +155 -0
  729. package/js/src/src/pro/woofipro.js +1335 -0
  730. package/js/src/src/pro/xt.d.ts +165 -0
  731. package/js/src/src/pro/xt.js +1230 -0
  732. package/js/src/src/probit.d.ts +283 -0
  733. package/js/src/src/probit.js +1935 -0
  734. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  735. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  736. package/js/src/src/raastin.d.ts +24 -0
  737. package/js/src/src/raastin.js +494 -0
  738. package/js/src/src/ramzinex.d.ts +23 -0
  739. package/js/src/src/ramzinex.js +510 -0
  740. package/js/src/src/sarmayex.d.ts +21 -0
  741. package/js/src/src/sarmayex.js +376 -0
  742. package/js/src/src/sarrafex.d.ts +23 -0
  743. package/js/src/src/sarrafex.js +501 -0
  744. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  745. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  746. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  747. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  748. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  749. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  750. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  751. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  752. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  753. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  754. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  755. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  756. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  757. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  758. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  759. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  760. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  761. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  762. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  763. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  764. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  765. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  766. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  767. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  768. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  769. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  770. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  771. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  772. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  773. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  774. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  777. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  778. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  779. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  780. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  781. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  782. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  783. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  784. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  785. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  786. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  787. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  788. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  789. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  790. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  791. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  792. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  793. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  794. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  795. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  796. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  797. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  798. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  799. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  800. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  801. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  802. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  803. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  804. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  805. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  806. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  807. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  808. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  809. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  810. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  811. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  812. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  813. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  814. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  815. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  816. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  817. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  818. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  819. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  820. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  821. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  822. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  823. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  824. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  825. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  826. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  827. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  828. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  829. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  830. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  831. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  832. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  833. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  834. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  835. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  836. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  837. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  850. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  851. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  852. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  853. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  854. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  855. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  856. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  857. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  858. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  859. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  860. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  861. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  868. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  869. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  870. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  871. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  872. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  873. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  874. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  875. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  876. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  877. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  878. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  879. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  880. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  881. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  882. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  883. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  884. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  885. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  886. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  887. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  888. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  889. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  890. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  891. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  892. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  893. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  894. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  895. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  896. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  897. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  898. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  899. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  900. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  901. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  902. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  903. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  904. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  905. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  906. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  907. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  908. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  909. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  910. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  911. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  912. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  913. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  914. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  915. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  916. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  917. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  918. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  919. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  920. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  921. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  922. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  923. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  924. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  925. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  926. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  927. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  928. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  929. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  930. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  931. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  932. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  933. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  934. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  935. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  937. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  938. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  939. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  940. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  941. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  942. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  943. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  944. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  945. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  946. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  947. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  948. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  949. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  950. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  951. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  952. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  953. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  954. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  955. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  956. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  957. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  958. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  959. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  984. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  985. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  986. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  987. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  988. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  989. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  990. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  991. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  992. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  993. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  994. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  995. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  996. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  998. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  999. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1000. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1001. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1002. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1003. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1004. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1005. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1006. package/js/src/src/tabdeal.d.ts +23 -0
  1007. package/js/src/src/tabdeal.js +387 -0
  1008. package/js/src/src/tehran_exchange.d.ts +21 -0
  1009. package/js/src/src/tehran_exchange.js +333 -0
  1010. package/js/src/src/tetherland.d.ts +21 -0
  1011. package/js/src/src/tetherland.js +367 -0
  1012. package/js/src/src/timex.d.ts +247 -0
  1013. package/js/src/src/timex.js +1792 -0
  1014. package/js/src/src/tokocrypto.d.ts +261 -0
  1015. package/js/src/src/tokocrypto.js +2641 -0
  1016. package/js/src/src/toobit.d.ts +22 -0
  1017. package/js/src/src/toobit.js +445 -0
  1018. package/js/src/src/tradeogre.d.ts +149 -0
  1019. package/js/src/src/tradeogre.js +878 -0
  1020. package/js/src/src/twox.d.ts +21 -0
  1021. package/js/src/src/twox.js +371 -0
  1022. package/js/src/src/ubitex.d.ts +23 -0
  1023. package/js/src/src/ubitex.js +433 -0
  1024. package/js/src/src/upbit.d.ts +377 -0
  1025. package/js/src/src/upbit.js +2340 -0
  1026. package/js/src/src/vertex.d.ts +346 -0
  1027. package/js/src/src/vertex.js +3146 -0
  1028. package/js/src/src/wallex.d.ts +23 -0
  1029. package/js/src/src/wallex.js +467 -0
  1030. package/js/src/src/wavesexchange.d.ts +244 -0
  1031. package/js/src/src/wavesexchange.js +2747 -0
  1032. package/js/src/src/whitebit.d.ts +571 -0
  1033. package/js/src/src/whitebit.js +3437 -0
  1034. package/js/src/src/woo.d.ts +727 -0
  1035. package/js/src/src/woo.js +4183 -0
  1036. package/js/src/src/woofipro.d.ts +497 -0
  1037. package/js/src/src/woofipro.js +2941 -0
  1038. package/js/src/src/xt.d.ts +568 -0
  1039. package/js/src/src/xt.js +5184 -0
  1040. package/js/src/src/yobit.d.ts +197 -0
  1041. package/js/src/src/yobit.js +1453 -0
  1042. package/js/src/src/zaif.d.ts +136 -0
  1043. package/js/src/src/zaif.js +821 -0
  1044. package/js/src/src/zonda.d.ts +214 -0
  1045. package/js/src/src/zonda.js +1984 -0
  1046. package/js/test.js +3 -3
  1047. package/package.json +1 -1
@@ -0,0 +1,1016 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
8
+ // Short Weierstrass curve. The formula is: y² = x³ + ax + b
9
+ import * as mod from './modular.js';
10
+ import * as ut from './utils.js';
11
+ import { ensureBytes } from './utils.js';
12
+ import { wNAF, validateBasic } from './curve.js';
13
+ function validatePointOpts(curve) {
14
+ const opts = validateBasic(curve);
15
+ ut.validateObject(opts, {
16
+ a: 'field',
17
+ b: 'field',
18
+ fromBytes: 'function',
19
+ toBytes: 'function',
20
+ }, {
21
+ allowedPrivateKeyLengths: 'array',
22
+ wrapPrivateKey: 'boolean',
23
+ isTorsionFree: 'function',
24
+ clearCofactor: 'function',
25
+ allowInfinityPoint: 'boolean',
26
+ });
27
+ const { endo, Fp, a } = opts;
28
+ if (endo) {
29
+ if (!Fp.eql(a, Fp.ZERO)) {
30
+ throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');
31
+ }
32
+ if (typeof endo !== 'object' ||
33
+ typeof endo.beta !== 'bigint' ||
34
+ typeof endo.splitScalar !== 'function') {
35
+ throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');
36
+ }
37
+ }
38
+ return Object.freeze({ ...opts });
39
+ }
40
+ // ASN.1 DER encoding utilities
41
+ const { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;
42
+ export const DER = {
43
+ // asn.1 DER encoding utils
44
+ Err: class DERErr extends Error {
45
+ constructor(m = '') {
46
+ super(m);
47
+ }
48
+ },
49
+ _parseInt(data) {
50
+ const { Err: E } = DER;
51
+ if (data.length < 2 || data[0] !== 0x02)
52
+ throw new E('Invalid signature integer tag');
53
+ const len = data[1];
54
+ const res = data.subarray(2, len + 2);
55
+ if (!len || res.length !== len)
56
+ throw new E('Invalid signature integer: wrong length');
57
+ if (res[0] === 0x00 && res[1] <= 0x7f)
58
+ throw new E('Invalid signature integer: trailing length');
59
+ // ^ Weird condition: not about length, but about first bytes of number.
60
+ return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left
61
+ },
62
+ toSig(hex) {
63
+ // parse DER signature
64
+ const { Err: E } = DER;
65
+ const data = typeof hex === 'string' ? h2b(hex) : hex;
66
+ if (!(data instanceof Uint8Array))
67
+ throw new Error('ui8a expected');
68
+ let l = data.length;
69
+ if (l < 2 || data[0] != 0x30)
70
+ throw new E('Invalid signature tag');
71
+ if (data[1] !== l - 2)
72
+ throw new E('Invalid signature: incorrect length');
73
+ const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));
74
+ const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);
75
+ if (rBytesLeft.length)
76
+ throw new E('Invalid signature: left bytes after parsing');
77
+ return { r, s };
78
+ },
79
+ hexFromSig(sig) {
80
+ const slice = (s) => (Number.parseInt(s[0], 16) >= 8 ? '00' + s : s); // slice DER
81
+ const h = (num) => {
82
+ const hex = num.toString(16);
83
+ return hex.length & 1 ? `0${hex}` : hex;
84
+ };
85
+ const s = slice(h(sig.s));
86
+ const r = slice(h(sig.r));
87
+ const shl = s.length / 2;
88
+ const rhl = r.length / 2;
89
+ const sl = h(shl);
90
+ const rl = h(rhl);
91
+ return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;
92
+ },
93
+ };
94
+ // Be friendly to bad ECMAScript parsers by not using bigint literals like 123n
95
+ const _0n = BigInt(0);
96
+ const _1n = BigInt(1);
97
+ export function weierstrassPoints(opts) {
98
+ const CURVE = validatePointOpts(opts);
99
+ const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ
100
+ /**
101
+ * y² = x³ + ax + b: Short weierstrass curve formula
102
+ * @returns y²
103
+ */
104
+ function weierstrassEquation(x) {
105
+ const { a, b } = CURVE;
106
+ const x2 = Fp.sqr(x); // x * x
107
+ const x3 = Fp.mul(x2, x); // x2 * x
108
+ return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b
109
+ }
110
+ // Valid group elements reside in range 1..n-1
111
+ function isWithinCurveOrder(num) {
112
+ return typeof num === 'bigint' && _0n < num && num < CURVE.n;
113
+ }
114
+ function assertGE(num) {
115
+ if (!isWithinCurveOrder(num))
116
+ throw new Error('Expected valid bigint: 0 < bigint < curve.n');
117
+ }
118
+ // Validates if priv key is valid and converts it to bigint.
119
+ // Supports options allowedPrivateKeyLengths and wrapPrivateKey.
120
+ function normPrivateKeyToScalar(key) {
121
+ const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;
122
+ if (lengths && typeof key !== 'bigint') {
123
+ if (key instanceof Uint8Array)
124
+ key = ut.bytesToHex(key);
125
+ // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes
126
+ if (typeof key !== 'string' || !lengths.includes(key.length))
127
+ throw new Error('Invalid key');
128
+ key = key.padStart(nByteLength * 2, '0');
129
+ }
130
+ let num;
131
+ try {
132
+ num =
133
+ typeof key === 'bigint'
134
+ ? key
135
+ : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));
136
+ }
137
+ catch (error) {
138
+ throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);
139
+ }
140
+ if (wrapPrivateKey)
141
+ num = mod.mod(num, n); // disabled by default, enabled for BLS
142
+ assertGE(num); // num in range [1..N-1]
143
+ return num;
144
+ }
145
+ const pointPrecomputes = new Map();
146
+ function assertPrjPoint(other) {
147
+ if (!(other instanceof Point))
148
+ throw new Error('ProjectivePoint expected');
149
+ }
150
+ /**
151
+ * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)
152
+ * Default Point works in 2d / affine coordinates: (x, y)
153
+ * We're doing calculations in projective, because its operations don't require costly inversion.
154
+ */
155
+ class Point {
156
+ constructor(px, py, pz) {
157
+ this.px = px;
158
+ this.py = py;
159
+ this.pz = pz;
160
+ if (px == null || !Fp.isValid(px))
161
+ throw new Error('x required');
162
+ if (py == null || !Fp.isValid(py))
163
+ throw new Error('y required');
164
+ if (pz == null || !Fp.isValid(pz))
165
+ throw new Error('z required');
166
+ }
167
+ // Does not validate if the point is on-curve.
168
+ // Use fromHex instead, or call assertValidity() later.
169
+ static fromAffine(p) {
170
+ const { x, y } = p || {};
171
+ if (!p || !Fp.isValid(x) || !Fp.isValid(y))
172
+ throw new Error('invalid affine point');
173
+ if (p instanceof Point)
174
+ throw new Error('projective point not allowed');
175
+ const is0 = (i) => Fp.eql(i, Fp.ZERO);
176
+ // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)
177
+ if (is0(x) && is0(y))
178
+ return Point.ZERO;
179
+ return new Point(x, y, Fp.ONE);
180
+ }
181
+ get x() {
182
+ return this.toAffine().x;
183
+ }
184
+ get y() {
185
+ return this.toAffine().y;
186
+ }
187
+ /**
188
+ * Takes a bunch of Projective Points but executes only one
189
+ * inversion on all of them. Inversion is very slow operation,
190
+ * so this improves performance massively.
191
+ * Optimization: converts a list of projective points to a list of identical points with Z=1.
192
+ */
193
+ static normalizeZ(points) {
194
+ const toInv = Fp.invertBatch(points.map((p) => p.pz));
195
+ return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);
196
+ }
197
+ /**
198
+ * Converts hash string or Uint8Array to Point.
199
+ * @param hex short/long ECDSA hex
200
+ */
201
+ static fromHex(hex) {
202
+ const P = Point.fromAffine(CURVE.fromBytes(ensureBytes('pointHex', hex)));
203
+ P.assertValidity();
204
+ return P;
205
+ }
206
+ // Multiplies generator point by privateKey.
207
+ static fromPrivateKey(privateKey) {
208
+ return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));
209
+ }
210
+ // "Private method", don't use it directly
211
+ _setWindowSize(windowSize) {
212
+ this._WINDOW_SIZE = windowSize;
213
+ pointPrecomputes.delete(this);
214
+ }
215
+ // A point on curve is valid if it conforms to equation.
216
+ assertValidity() {
217
+ // Zero is valid point too!
218
+ if (this.is0()) {
219
+ if (CURVE.allowInfinityPoint)
220
+ return;
221
+ throw new Error('bad point: ZERO');
222
+ }
223
+ // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`
224
+ const { x, y } = this.toAffine();
225
+ // Check if x, y are valid field elements
226
+ if (!Fp.isValid(x) || !Fp.isValid(y))
227
+ throw new Error('bad point: x or y not FE');
228
+ const left = Fp.sqr(y); // y²
229
+ const right = weierstrassEquation(x); // x³ + ax + b
230
+ if (!Fp.eql(left, right))
231
+ throw new Error('bad point: equation left != right');
232
+ if (!this.isTorsionFree())
233
+ throw new Error('bad point: not in prime-order subgroup');
234
+ }
235
+ hasEvenY() {
236
+ const { y } = this.toAffine();
237
+ if (Fp.isOdd)
238
+ return !Fp.isOdd(y);
239
+ throw new Error("Field doesn't support isOdd");
240
+ }
241
+ /**
242
+ * Compare one point to another.
243
+ */
244
+ equals(other) {
245
+ assertPrjPoint(other);
246
+ const { px: X1, py: Y1, pz: Z1 } = this;
247
+ const { px: X2, py: Y2, pz: Z2 } = other;
248
+ const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));
249
+ const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));
250
+ return U1 && U2;
251
+ }
252
+ /**
253
+ * Flips point to one corresponding to (x, -y) in Affine coordinates.
254
+ */
255
+ negate() {
256
+ return new Point(this.px, Fp.neg(this.py), this.pz);
257
+ }
258
+ // Renes-Costello-Batina exception-free doubling formula.
259
+ // There is 30% faster Jacobian formula, but it is not complete.
260
+ // https://eprint.iacr.org/2015/1060, algorithm 3
261
+ // Cost: 8M + 3S + 3*a + 2*b3 + 15add.
262
+ double() {
263
+ const { a, b } = CURVE;
264
+ const b3 = Fp.mul(b, 3n);
265
+ const { px: X1, py: Y1, pz: Z1 } = this;
266
+ let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore
267
+ let t0 = Fp.mul(X1, X1); // step 1
268
+ let t1 = Fp.mul(Y1, Y1);
269
+ let t2 = Fp.mul(Z1, Z1);
270
+ let t3 = Fp.mul(X1, Y1);
271
+ t3 = Fp.add(t3, t3); // step 5
272
+ Z3 = Fp.mul(X1, Z1);
273
+ Z3 = Fp.add(Z3, Z3);
274
+ X3 = Fp.mul(a, Z3);
275
+ Y3 = Fp.mul(b3, t2);
276
+ Y3 = Fp.add(X3, Y3); // step 10
277
+ X3 = Fp.sub(t1, Y3);
278
+ Y3 = Fp.add(t1, Y3);
279
+ Y3 = Fp.mul(X3, Y3);
280
+ X3 = Fp.mul(t3, X3);
281
+ Z3 = Fp.mul(b3, Z3); // step 15
282
+ t2 = Fp.mul(a, t2);
283
+ t3 = Fp.sub(t0, t2);
284
+ t3 = Fp.mul(a, t3);
285
+ t3 = Fp.add(t3, Z3);
286
+ Z3 = Fp.add(t0, t0); // step 20
287
+ t0 = Fp.add(Z3, t0);
288
+ t0 = Fp.add(t0, t2);
289
+ t0 = Fp.mul(t0, t3);
290
+ Y3 = Fp.add(Y3, t0);
291
+ t2 = Fp.mul(Y1, Z1); // step 25
292
+ t2 = Fp.add(t2, t2);
293
+ t0 = Fp.mul(t2, t3);
294
+ X3 = Fp.sub(X3, t0);
295
+ Z3 = Fp.mul(t2, t1);
296
+ Z3 = Fp.add(Z3, Z3); // step 30
297
+ Z3 = Fp.add(Z3, Z3);
298
+ return new Point(X3, Y3, Z3);
299
+ }
300
+ // Renes-Costello-Batina exception-free addition formula.
301
+ // There is 30% faster Jacobian formula, but it is not complete.
302
+ // https://eprint.iacr.org/2015/1060, algorithm 1
303
+ // Cost: 12M + 0S + 3*a + 3*b3 + 23add.
304
+ add(other) {
305
+ assertPrjPoint(other);
306
+ const { px: X1, py: Y1, pz: Z1 } = this;
307
+ const { px: X2, py: Y2, pz: Z2 } = other;
308
+ let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore
309
+ const a = CURVE.a;
310
+ const b3 = Fp.mul(CURVE.b, 3n);
311
+ let t0 = Fp.mul(X1, X2); // step 1
312
+ let t1 = Fp.mul(Y1, Y2);
313
+ let t2 = Fp.mul(Z1, Z2);
314
+ let t3 = Fp.add(X1, Y1);
315
+ let t4 = Fp.add(X2, Y2); // step 5
316
+ t3 = Fp.mul(t3, t4);
317
+ t4 = Fp.add(t0, t1);
318
+ t3 = Fp.sub(t3, t4);
319
+ t4 = Fp.add(X1, Z1);
320
+ let t5 = Fp.add(X2, Z2); // step 10
321
+ t4 = Fp.mul(t4, t5);
322
+ t5 = Fp.add(t0, t2);
323
+ t4 = Fp.sub(t4, t5);
324
+ t5 = Fp.add(Y1, Z1);
325
+ X3 = Fp.add(Y2, Z2); // step 15
326
+ t5 = Fp.mul(t5, X3);
327
+ X3 = Fp.add(t1, t2);
328
+ t5 = Fp.sub(t5, X3);
329
+ Z3 = Fp.mul(a, t4);
330
+ X3 = Fp.mul(b3, t2); // step 20
331
+ Z3 = Fp.add(X3, Z3);
332
+ X3 = Fp.sub(t1, Z3);
333
+ Z3 = Fp.add(t1, Z3);
334
+ Y3 = Fp.mul(X3, Z3);
335
+ t1 = Fp.add(t0, t0); // step 25
336
+ t1 = Fp.add(t1, t0);
337
+ t2 = Fp.mul(a, t2);
338
+ t4 = Fp.mul(b3, t4);
339
+ t1 = Fp.add(t1, t2);
340
+ t2 = Fp.sub(t0, t2); // step 30
341
+ t2 = Fp.mul(a, t2);
342
+ t4 = Fp.add(t4, t2);
343
+ t0 = Fp.mul(t1, t4);
344
+ Y3 = Fp.add(Y3, t0);
345
+ t0 = Fp.mul(t5, t4); // step 35
346
+ X3 = Fp.mul(t3, X3);
347
+ X3 = Fp.sub(X3, t0);
348
+ t0 = Fp.mul(t3, t1);
349
+ Z3 = Fp.mul(t5, Z3);
350
+ Z3 = Fp.add(Z3, t0); // step 40
351
+ return new Point(X3, Y3, Z3);
352
+ }
353
+ subtract(other) {
354
+ return this.add(other.negate());
355
+ }
356
+ is0() {
357
+ return this.equals(Point.ZERO);
358
+ }
359
+ wNAF(n) {
360
+ return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => {
361
+ const toInv = Fp.invertBatch(comp.map((p) => p.pz));
362
+ return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);
363
+ });
364
+ }
365
+ /**
366
+ * Non-constant-time multiplication. Uses double-and-add algorithm.
367
+ * It's faster, but should only be used when you don't care about
368
+ * an exposed private key e.g. sig verification, which works over *public* keys.
369
+ */
370
+ multiplyUnsafe(n) {
371
+ const I = Point.ZERO;
372
+ if (n === _0n)
373
+ return I;
374
+ assertGE(n); // Will throw on 0
375
+ if (n === _1n)
376
+ return this;
377
+ const { endo } = CURVE;
378
+ if (!endo)
379
+ return wnaf.unsafeLadder(this, n);
380
+ // Apply endomorphism
381
+ let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);
382
+ let k1p = I;
383
+ let k2p = I;
384
+ let d = this;
385
+ while (k1 > _0n || k2 > _0n) {
386
+ if (k1 & _1n)
387
+ k1p = k1p.add(d);
388
+ if (k2 & _1n)
389
+ k2p = k2p.add(d);
390
+ d = d.double();
391
+ k1 >>= _1n;
392
+ k2 >>= _1n;
393
+ }
394
+ if (k1neg)
395
+ k1p = k1p.negate();
396
+ if (k2neg)
397
+ k2p = k2p.negate();
398
+ k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);
399
+ return k1p.add(k2p);
400
+ }
401
+ /**
402
+ * Constant time multiplication.
403
+ * Uses wNAF method. Windowed method may be 10% faster,
404
+ * but takes 2x longer to generate and consumes 2x memory.
405
+ * Uses precomputes when available.
406
+ * Uses endomorphism for Koblitz curves.
407
+ * @param scalar by which the point would be multiplied
408
+ * @returns New point
409
+ */
410
+ multiply(scalar) {
411
+ assertGE(scalar);
412
+ let n = scalar;
413
+ let point, fake; // Fake point is used to const-time mult
414
+ const { endo } = CURVE;
415
+ if (endo) {
416
+ const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);
417
+ let { p: k1p, f: f1p } = this.wNAF(k1);
418
+ let { p: k2p, f: f2p } = this.wNAF(k2);
419
+ k1p = wnaf.constTimeNegate(k1neg, k1p);
420
+ k2p = wnaf.constTimeNegate(k2neg, k2p);
421
+ k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);
422
+ point = k1p.add(k2p);
423
+ fake = f1p.add(f2p);
424
+ }
425
+ else {
426
+ const { p, f } = this.wNAF(n);
427
+ point = p;
428
+ fake = f;
429
+ }
430
+ // Normalize `z` for both points, but return only real one
431
+ return Point.normalizeZ([point, fake])[0];
432
+ }
433
+ /**
434
+ * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.
435
+ * Not using Strauss-Shamir trick: precomputation tables are faster.
436
+ * The trick could be useful if both P and Q are not G (not in our case).
437
+ * @returns non-zero affine point
438
+ */
439
+ multiplyAndAddUnsafe(Q, a, b) {
440
+ const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes
441
+ const mul = (P, a // Select faster multiply() method
442
+ ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));
443
+ const sum = mul(this, a).add(mul(Q, b));
444
+ return sum.is0() ? undefined : sum;
445
+ }
446
+ // Converts Projective point to affine (x, y) coordinates.
447
+ // Can accept precomputed Z^-1 - for example, from invertBatch.
448
+ // (x, y, z) ∋ (x=x/z, y=y/z)
449
+ toAffine(iz) {
450
+ const { px: x, py: y, pz: z } = this;
451
+ const is0 = this.is0();
452
+ // If invZ was 0, we return zero point. However we still want to execute
453
+ // all operations, so we replace invZ with a random number, 1.
454
+ if (iz == null)
455
+ iz = is0 ? Fp.ONE : Fp.inv(z);
456
+ const ax = Fp.mul(x, iz);
457
+ const ay = Fp.mul(y, iz);
458
+ const zz = Fp.mul(z, iz);
459
+ if (is0)
460
+ return { x: Fp.ZERO, y: Fp.ZERO };
461
+ if (!Fp.eql(zz, Fp.ONE))
462
+ throw new Error('invZ was invalid');
463
+ return { x: ax, y: ay };
464
+ }
465
+ isTorsionFree() {
466
+ const { h: cofactor, isTorsionFree } = CURVE;
467
+ if (cofactor === _1n)
468
+ return true; // No subgroups, always torsion-free
469
+ if (isTorsionFree)
470
+ return isTorsionFree(Point, this);
471
+ throw new Error('isTorsionFree() has not been declared for the elliptic curve');
472
+ }
473
+ clearCofactor() {
474
+ const { h: cofactor, clearCofactor } = CURVE;
475
+ if (cofactor === _1n)
476
+ return this; // Fast-path
477
+ if (clearCofactor)
478
+ return clearCofactor(Point, this);
479
+ return this.multiplyUnsafe(CURVE.h);
480
+ }
481
+ toRawBytes(isCompressed = true) {
482
+ this.assertValidity();
483
+ return CURVE.toBytes(Point, this, isCompressed);
484
+ }
485
+ toHex(isCompressed = true) {
486
+ return ut.bytesToHex(this.toRawBytes(isCompressed));
487
+ }
488
+ }
489
+ Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);
490
+ Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);
491
+ const _bits = CURVE.nBitLength;
492
+ const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);
493
+ return {
494
+ ProjectivePoint: Point,
495
+ normPrivateKeyToScalar,
496
+ weierstrassEquation,
497
+ isWithinCurveOrder,
498
+ };
499
+ }
500
+ function validateOpts(curve) {
501
+ const opts = validateBasic(curve);
502
+ ut.validateObject(opts, {
503
+ hash: 'hash',
504
+ hmac: 'function',
505
+ randomBytes: 'function',
506
+ }, {
507
+ bits2int: 'function',
508
+ bits2int_modN: 'function',
509
+ lowS: 'boolean',
510
+ });
511
+ return Object.freeze({ lowS: true, ...opts });
512
+ }
513
+ export function weierstrass(curveDef) {
514
+ const CURVE = validateOpts(curveDef);
515
+ const CURVE_ORDER = CURVE.n;
516
+ const Fp = CURVE.Fp;
517
+ const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32
518
+ const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32
519
+ function isValidFieldElement(num) {
520
+ return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE
521
+ }
522
+ function modN(a) {
523
+ return mod.mod(a, CURVE_ORDER);
524
+ }
525
+ function invN(a) {
526
+ return mod.invert(a, CURVE_ORDER);
527
+ }
528
+ const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({
529
+ ...CURVE,
530
+ toBytes(c, point, isCompressed) {
531
+ const a = point.toAffine();
532
+ const x = Fp.toBytes(a.x);
533
+ const cat = ut.concatBytes;
534
+ if (isCompressed) {
535
+ return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);
536
+ }
537
+ else {
538
+ return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));
539
+ }
540
+ },
541
+ fromBytes(bytes) {
542
+ const len = bytes.length;
543
+ const head = bytes[0];
544
+ const tail = bytes.subarray(1);
545
+ // this.assertValidity() is done inside of fromHex
546
+ if (len === compressedLen && (head === 0x02 || head === 0x03)) {
547
+ const x = ut.bytesToNumberBE(tail);
548
+ if (!isValidFieldElement(x))
549
+ throw new Error('Point is not on curve');
550
+ const y2 = weierstrassEquation(x); // y² = x³ + ax + b
551
+ let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4
552
+ const isYOdd = (y & _1n) === _1n;
553
+ // ECDSA
554
+ const isHeadOdd = (head & 1) === 1;
555
+ if (isHeadOdd !== isYOdd)
556
+ y = Fp.neg(y);
557
+ return { x, y };
558
+ }
559
+ else if (len === uncompressedLen && head === 0x04) {
560
+ const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));
561
+ const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));
562
+ return { x, y };
563
+ }
564
+ else {
565
+ throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);
566
+ }
567
+ },
568
+ });
569
+ const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));
570
+ function isBiggerThanHalfOrder(number) {
571
+ const HALF = CURVE_ORDER >> _1n;
572
+ return number > HALF;
573
+ }
574
+ function normalizeS(s) {
575
+ return isBiggerThanHalfOrder(s) ? modN(-s) : s;
576
+ }
577
+ // slice bytes num
578
+ const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));
579
+ /**
580
+ * ECDSA signature with its (r, s) properties. Supports DER & compact representations.
581
+ */
582
+ class Signature {
583
+ constructor(r, s, recovery) {
584
+ this.r = r;
585
+ this.s = s;
586
+ this.recovery = recovery;
587
+ this.assertValidity();
588
+ }
589
+ // pair (bytes of r, bytes of s)
590
+ static fromCompact(hex) {
591
+ const l = CURVE.nByteLength;
592
+ hex = ensureBytes('compactSignature', hex, l * 2);
593
+ return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));
594
+ }
595
+ // DER encoded ECDSA signature
596
+ // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script
597
+ static fromDER(hex) {
598
+ const { r, s } = DER.toSig(ensureBytes('DER', hex));
599
+ return new Signature(r, s);
600
+ }
601
+ assertValidity() {
602
+ // can use assertGE here
603
+ if (!isWithinCurveOrder(this.r))
604
+ throw new Error('r must be 0 < r < CURVE.n');
605
+ if (!isWithinCurveOrder(this.s))
606
+ throw new Error('s must be 0 < s < CURVE.n');
607
+ }
608
+ addRecoveryBit(recovery) {
609
+ return new Signature(this.r, this.s, recovery);
610
+ }
611
+ recoverPublicKey(msgHash) {
612
+ const { r, s, recovery: rec } = this;
613
+ const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash
614
+ if (rec == null || ![0, 1, 2, 3].includes(rec))
615
+ throw new Error('recovery id invalid');
616
+ const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;
617
+ if (radj >= Fp.ORDER)
618
+ throw new Error('recovery id 2 or 3 invalid');
619
+ const prefix = (rec & 1) === 0 ? '02' : '03';
620
+ const R = Point.fromHex(prefix + numToNByteStr(radj));
621
+ const ir = invN(radj); // r^-1
622
+ const u1 = modN(-h * ir); // -hr^-1
623
+ const u2 = modN(s * ir); // sr^-1
624
+ const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)
625
+ if (!Q)
626
+ throw new Error('point at infinify'); // unsafe is fine: no priv data leaked
627
+ Q.assertValidity();
628
+ return Q;
629
+ }
630
+ // Signatures should be low-s, to prevent malleability.
631
+ hasHighS() {
632
+ return isBiggerThanHalfOrder(this.s);
633
+ }
634
+ normalizeS() {
635
+ return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;
636
+ }
637
+ // DER-encoded
638
+ toDERRawBytes() {
639
+ return ut.hexToBytes(this.toDERHex());
640
+ }
641
+ toDERHex() {
642
+ return DER.hexFromSig({ r: this.r, s: this.s });
643
+ }
644
+ // padded bytes of r, then padded bytes of s
645
+ toCompactRawBytes() {
646
+ return ut.hexToBytes(this.toCompactHex());
647
+ }
648
+ toCompactHex() {
649
+ return numToNByteStr(this.r) + numToNByteStr(this.s);
650
+ }
651
+ }
652
+ const utils = {
653
+ isValidPrivateKey(privateKey) {
654
+ try {
655
+ normPrivateKeyToScalar(privateKey);
656
+ return true;
657
+ }
658
+ catch (error) {
659
+ return false;
660
+ }
661
+ },
662
+ normPrivateKeyToScalar: normPrivateKeyToScalar,
663
+ /**
664
+ * Produces cryptographically secure private key from random of size (nBitLength+64)
665
+ * as per FIPS 186 B.4.1 with modulo bias being neglible.
666
+ */
667
+ randomPrivateKey: () => {
668
+ const rand = CURVE.randomBytes(Fp.BYTES + 8);
669
+ const num = mod.hashToPrivateScalar(rand, CURVE_ORDER);
670
+ return ut.numberToBytesBE(num, CURVE.nByteLength);
671
+ },
672
+ /**
673
+ * Creates precompute table for an arbitrary EC point. Makes point "cached".
674
+ * Allows to massively speed-up `point.multiply(scalar)`.
675
+ * @returns cached point
676
+ * @example
677
+ * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));
678
+ * fast.multiply(privKey); // much faster ECDH now
679
+ */
680
+ precompute(windowSize = 8, point = Point.BASE) {
681
+ point._setWindowSize(windowSize);
682
+ point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here
683
+ return point;
684
+ },
685
+ };
686
+ /**
687
+ * Computes public key for a private key. Checks for validity of the private key.
688
+ * @param privateKey private key
689
+ * @param isCompressed whether to return compact (default), or full key
690
+ * @returns Public key, full when isCompressed=false; short when isCompressed=true
691
+ */
692
+ function getPublicKey(privateKey, isCompressed = true) {
693
+ return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);
694
+ }
695
+ /**
696
+ * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.
697
+ */
698
+ function isProbPub(item) {
699
+ const arr = item instanceof Uint8Array;
700
+ const str = typeof item === 'string';
701
+ const len = (arr || str) && item.length;
702
+ if (arr)
703
+ return len === compressedLen || len === uncompressedLen;
704
+ if (str)
705
+ return len === 2 * compressedLen || len === 2 * uncompressedLen;
706
+ if (item instanceof Point)
707
+ return true;
708
+ return false;
709
+ }
710
+ /**
711
+ * ECDH (Elliptic Curve Diffie Hellman).
712
+ * Computes shared public key from private key and public key.
713
+ * Checks: 1) private key validity 2) shared key is on-curve.
714
+ * Does NOT hash the result.
715
+ * @param privateA private key
716
+ * @param publicB different public key
717
+ * @param isCompressed whether to return compact (default), or full key
718
+ * @returns shared public key
719
+ */
720
+ function getSharedSecret(privateA, publicB, isCompressed = true) {
721
+ if (isProbPub(privateA))
722
+ throw new Error('first arg must be private key');
723
+ if (!isProbPub(publicB))
724
+ throw new Error('second arg must be public key');
725
+ const b = Point.fromHex(publicB); // check for being on-curve
726
+ return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);
727
+ }
728
+ // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.
729
+ // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.
730
+ // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.
731
+ // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors
732
+ const bits2int = CURVE.bits2int ||
733
+ function (bytes) {
734
+ // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)
735
+ // for some cases, since bytes.length * 8 is not actual bitLength.
736
+ const num = ut.bytesToNumberBE(bytes); // check for == u8 done here
737
+ const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits
738
+ return delta > 0 ? num >> BigInt(delta) : num;
739
+ };
740
+ const bits2int_modN = CURVE.bits2int_modN ||
741
+ function (bytes) {
742
+ return modN(bits2int(bytes)); // can't use bytesToNumberBE here
743
+ };
744
+ // NOTE: pads output with zero as per spec
745
+ const ORDER_MASK = ut.bitMask(CURVE.nBitLength);
746
+ /**
747
+ * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.
748
+ */
749
+ function int2octets(num) {
750
+ if (typeof num !== 'bigint')
751
+ throw new Error('bigint expected');
752
+ if (!(_0n <= num && num < ORDER_MASK))
753
+ throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);
754
+ // works with order, can have different size than numToField!
755
+ return ut.numberToBytesBE(num, CURVE.nByteLength);
756
+ }
757
+ // Steps A, D of RFC6979 3.2
758
+ // Creates RFC6979 seed; converts msg/privKey to numbers.
759
+ // Used only in sign, not in verify.
760
+ // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.
761
+ // Also it can be bigger for P224 + SHA256
762
+ function prepSig(msgHash, privateKey, opts = defaultSigOpts) {
763
+ if (['recovered', 'canonical'].some((k) => k in opts))
764
+ throw new Error('sign() legacy options not supported');
765
+ const { hash, randomBytes } = CURVE;
766
+ let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default
767
+ if (lowS == null)
768
+ lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash
769
+ msgHash = ensureBytes('msgHash', msgHash);
770
+ if (prehash)
771
+ msgHash = ensureBytes('prehashed msgHash', hash(msgHash));
772
+ // We can't later call bits2octets, since nested bits2int is broken for curves
773
+ // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.
774
+ // const bits2octets = (bits) => int2octets(bits2int_modN(bits))
775
+ const h1int = bits2int_modN(msgHash);
776
+ const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint
777
+ const seedArgs = [int2octets(d), int2octets(h1int)];
778
+ // extraEntropy. RFC6979 3.6: additional k' (optional).
779
+ if (ent != null) {
780
+ // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')
781
+ const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is
782
+ seedArgs.push(ensureBytes('extraEntropy', e, Fp.BYTES)); // check for being of size BYTES
783
+ }
784
+ const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2
785
+ const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!
786
+ // Converts signature params into point w r/s, checks result for validity.
787
+ function k2sig(kBytes) {
788
+ // RFC 6979 Section 3.2, step 3: k = bits2int(T)
789
+ const k = bits2int(kBytes); // Cannot use fields methods, since it is group element
790
+ if (!isWithinCurveOrder(k))
791
+ return; // Important: all mod() calls here must be done over N
792
+ const ik = invN(k); // k^-1 mod n
793
+ const q = Point.BASE.multiply(k).toAffine(); // q = Gk
794
+ const r = modN(q.x); // r = q.x mod n
795
+ if (r === _0n)
796
+ return;
797
+ // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to
798
+ // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:
799
+ // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT
800
+ const s = modN(ik * modN(m + r * d)); // Not using blinding here
801
+ if (s === _0n)
802
+ return;
803
+ let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)
804
+ let normS = s;
805
+ if (lowS && isBiggerThanHalfOrder(s)) {
806
+ normS = normalizeS(s); // if lowS was passed, ensure s is always
807
+ recovery ^= 1; // // in the bottom half of N
808
+ }
809
+ return new Signature(r, normS, recovery); // use normS, not s
810
+ }
811
+ return { seed, k2sig };
812
+ }
813
+ const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };
814
+ const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };
815
+ /**
816
+ * Signs message hash (not message: you need to hash it by yourself).
817
+ * ```
818
+ * sign(m, d, k) where
819
+ * (x, y) = G × k
820
+ * r = x mod n
821
+ * s = (m + dr)/k mod n
822
+ * ```
823
+ * @param opts `lowS, extraEntropy, prehash`
824
+ */
825
+ function sign(msgHash, privKey, opts = defaultSigOpts) {
826
+ const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.
827
+ const drbg = ut.createHmacDrbg(CURVE.hash.outputLen, CURVE.nByteLength, CURVE.hmac);
828
+ return drbg(seed, k2sig); // Steps B, C, D, E, F, G
829
+ }
830
+ // Enable precomputes. Slows down first publicKey computation by 20ms.
831
+ Point.BASE._setWindowSize(8);
832
+ // utils.precompute(8, ProjectivePoint.BASE)
833
+ /**
834
+ * Verifies a signature against message hash and public key.
835
+ * Rejects lowS signatures by default: to override,
836
+ * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:
837
+ *
838
+ * ```
839
+ * verify(r, s, h, P) where
840
+ * U1 = hs^-1 mod n
841
+ * U2 = rs^-1 mod n
842
+ * R = U1⋅G - U2⋅P
843
+ * mod(R.x, n) == r
844
+ * ```
845
+ */
846
+ function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {
847
+ const sg = signature;
848
+ msgHash = ensureBytes('msgHash', msgHash);
849
+ publicKey = ensureBytes('publicKey', publicKey);
850
+ if ('strict' in opts)
851
+ throw new Error('options.strict was renamed to lowS');
852
+ const { lowS, prehash } = opts;
853
+ let _sig = undefined;
854
+ let P;
855
+ try {
856
+ if (typeof sg === 'string' || sg instanceof Uint8Array) {
857
+ // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).
858
+ // Since DER can also be 2*nByteLength bytes, we check for it first.
859
+ try {
860
+ _sig = Signature.fromDER(sg);
861
+ }
862
+ catch (derError) {
863
+ if (!(derError instanceof DER.Err))
864
+ throw derError;
865
+ _sig = Signature.fromCompact(sg);
866
+ }
867
+ }
868
+ else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {
869
+ const { r, s } = sg;
870
+ _sig = new Signature(r, s);
871
+ }
872
+ else {
873
+ throw new Error('PARSE');
874
+ }
875
+ P = Point.fromHex(publicKey);
876
+ }
877
+ catch (error) {
878
+ if (error.message === 'PARSE')
879
+ throw new Error(`signature must be Signature instance, Uint8Array or hex string`);
880
+ return false;
881
+ }
882
+ if (lowS && _sig.hasHighS())
883
+ return false;
884
+ if (prehash)
885
+ msgHash = CURVE.hash(msgHash);
886
+ const { r, s } = _sig;
887
+ const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element
888
+ const is = invN(s); // s^-1
889
+ const u1 = modN(h * is); // u1 = hs^-1 mod n
890
+ const u2 = modN(r * is); // u2 = rs^-1 mod n
891
+ const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P
892
+ if (!R)
893
+ return false;
894
+ const v = modN(R.x);
895
+ return v === r;
896
+ }
897
+ return {
898
+ CURVE,
899
+ getPublicKey,
900
+ getSharedSecret,
901
+ sign,
902
+ verify,
903
+ ProjectivePoint: Point,
904
+ Signature,
905
+ utils,
906
+ };
907
+ }
908
+ // Implementation of the Shallue and van de Woestijne method for any Weierstrass curve
909
+ // TODO: check if there is a way to merge this with uvRatio in Edwards && move to modular?
910
+ // b = True and y = sqrt(u / v) if (u / v) is square in F, and
911
+ // b = False and y = sqrt(Z * (u / v)) otherwise.
912
+ export function SWUFpSqrtRatio(Fp, Z) {
913
+ // Generic implementation
914
+ const q = Fp.ORDER;
915
+ let l = 0n;
916
+ for (let o = q - 1n; o % 2n === 0n; o /= 2n)
917
+ l += 1n;
918
+ const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.
919
+ const c2 = (q - 1n) / 2n ** c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic
920
+ const c3 = (c2 - 1n) / 2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic
921
+ const c4 = 2n ** c1 - 1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic
922
+ const c5 = 2n ** (c1 - 1n); // 5. c5 = 2^(c1 - 1) # Integer arithmetic
923
+ const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2
924
+ const c7 = Fp.pow(Z, (c2 + 1n) / 2n); // 7. c7 = Z^((c2 + 1) / 2)
925
+ let sqrtRatio = (u, v) => {
926
+ let tv1 = c6; // 1. tv1 = c6
927
+ let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4
928
+ let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2
929
+ tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v
930
+ let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3
931
+ tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3
932
+ tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2
933
+ tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v
934
+ tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u
935
+ let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2
936
+ tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5
937
+ let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1
938
+ tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7
939
+ tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1
940
+ tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)
941
+ tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)
942
+ // 17. for i in (c1, c1 - 1, ..., 2):
943
+ for (let i = c1; i > 1; i--) {
944
+ let tv5 = 2n ** (i - 2n); // 18. tv5 = i - 2; 19. tv5 = 2^tv5
945
+ let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5
946
+ const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1
947
+ tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1
948
+ tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1
949
+ tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1
950
+ tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)
951
+ tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)
952
+ }
953
+ return { isValid: isQR, value: tv3 };
954
+ };
955
+ if (Fp.ORDER % 4n === 3n) {
956
+ // sqrt_ratio_3mod4(u, v)
957
+ const c1 = (Fp.ORDER - 3n) / 4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic
958
+ const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)
959
+ sqrtRatio = (u, v) => {
960
+ let tv1 = Fp.sqr(v); // 1. tv1 = v^2
961
+ const tv2 = Fp.mul(u, v); // 2. tv2 = u * v
962
+ tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2
963
+ let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1
964
+ y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2
965
+ const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2
966
+ const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v
967
+ const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u
968
+ let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)
969
+ return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2
970
+ };
971
+ }
972
+ // No curves uses that
973
+ // if (Fp.ORDER % 8n === 5n) // sqrt_ratio_5mod8
974
+ return sqrtRatio;
975
+ }
976
+ // From draft-irtf-cfrg-hash-to-curve-16
977
+ export function mapToCurveSimpleSWU(Fp, opts) {
978
+ mod.validateField(Fp);
979
+ if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))
980
+ throw new Error('mapToCurveSimpleSWU: invalid opts');
981
+ const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);
982
+ if (!Fp.isOdd)
983
+ throw new Error('Fp.isOdd is not implemented!');
984
+ // Input: u, an element of F.
985
+ // Output: (x, y), a point on E.
986
+ return (u) => {
987
+ // prettier-ignore
988
+ let tv1, tv2, tv3, tv4, tv5, tv6, x, y;
989
+ tv1 = Fp.sqr(u); // 1. tv1 = u^2
990
+ tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1
991
+ tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2
992
+ tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1
993
+ tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1
994
+ tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3
995
+ tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)
996
+ tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4
997
+ tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2
998
+ tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2
999
+ tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6
1000
+ tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5
1001
+ tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3
1002
+ tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4
1003
+ tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6
1004
+ tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5
1005
+ x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3
1006
+ const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)
1007
+ y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1
1008
+ y = Fp.mul(y, value); // 20. y = y * y1
1009
+ x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)
1010
+ y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)
1011
+ const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)
1012
+ y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)
1013
+ x = Fp.div(x, tv4); // 25. x = x / tv4
1014
+ return { x, y };
1015
+ };
1016
+ }