extended-typescript-sdk 0.0.5 → 0.0.7

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 (435) hide show
  1. package/README.md +318 -3
  2. package/dist/cjs/config.d.ts.map +1 -0
  3. package/dist/cjs/config.js.map +1 -0
  4. package/dist/cjs/errors.d.ts.map +1 -0
  5. package/dist/cjs/errors.js.map +1 -0
  6. package/dist/{index.d.ts → cjs/index.d.ts} +28 -28
  7. package/dist/cjs/index.d.ts.map +1 -0
  8. package/dist/{index.js → cjs/index.js} +98 -98
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/package.json +3 -0
  11. package/dist/{perpetual → cjs/perpetual}/accounts.d.ts +2 -2
  12. package/dist/cjs/perpetual/accounts.d.ts.map +1 -0
  13. package/dist/{perpetual → cjs/perpetual}/accounts.js +14 -14
  14. package/dist/cjs/perpetual/accounts.js.map +1 -0
  15. package/dist/{perpetual → cjs/perpetual}/amounts.d.ts +2 -2
  16. package/dist/cjs/perpetual/amounts.d.ts.map +1 -0
  17. package/dist/{perpetual → cjs/perpetual}/amounts.js +1 -1
  18. package/dist/cjs/perpetual/amounts.js.map +1 -0
  19. package/dist/{perpetual → cjs/perpetual}/assets.d.ts +2 -2
  20. package/dist/cjs/perpetual/assets.d.ts.map +1 -0
  21. package/dist/{perpetual → cjs/perpetual}/assets.js +3 -3
  22. package/dist/cjs/perpetual/assets.js.map +1 -0
  23. package/dist/{perpetual → cjs/perpetual}/bridges.d.ts +1 -1
  24. package/dist/cjs/perpetual/bridges.d.ts.map +1 -0
  25. package/dist/{perpetual → cjs/perpetual}/bridges.js +4 -4
  26. package/dist/cjs/perpetual/bridges.js.map +1 -0
  27. package/dist/{perpetual → cjs/perpetual}/candles.d.ts +1 -1
  28. package/dist/cjs/perpetual/candles.d.ts.map +1 -0
  29. package/dist/{perpetual → cjs/perpetual}/candles.js +2 -2
  30. package/dist/cjs/perpetual/candles.js.map +1 -0
  31. package/dist/{perpetual → cjs/perpetual}/clients.d.ts +1 -1
  32. package/dist/cjs/perpetual/clients.d.ts.map +1 -0
  33. package/dist/{perpetual → cjs/perpetual}/clients.js +2 -2
  34. package/dist/cjs/perpetual/clients.js.map +1 -0
  35. package/dist/cjs/perpetual/configuration.d.ts.map +1 -0
  36. package/dist/cjs/perpetual/configuration.js.map +1 -0
  37. package/dist/cjs/perpetual/crypto/signer.d.ts.map +1 -0
  38. package/dist/{perpetual → cjs/perpetual}/crypto/signer.js +66 -54
  39. package/dist/cjs/perpetual/crypto/signer.js.map +1 -0
  40. package/dist/cjs/perpetual/custom-signer.d.ts.map +1 -0
  41. package/dist/cjs/perpetual/custom-signer.js.map +1 -0
  42. package/dist/{perpetual → cjs/perpetual}/fees.d.ts +1 -1
  43. package/dist/cjs/perpetual/fees.d.ts.map +1 -0
  44. package/dist/{perpetual → cjs/perpetual}/fees.js +2 -2
  45. package/dist/cjs/perpetual/fees.js.map +1 -0
  46. package/dist/{perpetual → cjs/perpetual}/funding-rates.d.ts +1 -1
  47. package/dist/cjs/perpetual/funding-rates.d.ts.map +1 -0
  48. package/dist/{perpetual → cjs/perpetual}/funding-rates.js +2 -2
  49. package/dist/cjs/perpetual/funding-rates.js.map +1 -0
  50. package/dist/{perpetual → cjs/perpetual}/markets.d.ts +2 -2
  51. package/dist/cjs/perpetual/markets.d.ts.map +1 -0
  52. package/dist/{perpetual → cjs/perpetual}/markets.js +9 -9
  53. package/dist/cjs/perpetual/markets.js.map +1 -0
  54. package/dist/{perpetual → cjs/perpetual}/order-object-settlement.d.ts +5 -5
  55. package/dist/cjs/perpetual/order-object-settlement.d.ts.map +1 -0
  56. package/dist/{perpetual → cjs/perpetual}/order-object-settlement.js +13 -13
  57. package/dist/cjs/perpetual/order-object-settlement.js.map +1 -0
  58. package/dist/{perpetual → cjs/perpetual}/order-object.d.ts +4 -4
  59. package/dist/cjs/perpetual/order-object.d.ts.map +1 -0
  60. package/dist/cjs/perpetual/order-object.js +90 -0
  61. package/dist/cjs/perpetual/order-object.js.map +1 -0
  62. package/dist/{perpetual → cjs/perpetual}/orderbooks.d.ts +1 -1
  63. package/dist/cjs/perpetual/orderbooks.d.ts.map +1 -0
  64. package/dist/{perpetual → cjs/perpetual}/orderbooks.js +3 -3
  65. package/dist/cjs/perpetual/orderbooks.js.map +1 -0
  66. package/dist/{perpetual → cjs/perpetual}/orders.d.ts +1 -1
  67. package/dist/cjs/perpetual/orders.d.ts.map +1 -0
  68. package/dist/{perpetual → cjs/perpetual}/orders.js +7 -7
  69. package/dist/cjs/perpetual/orders.js.map +1 -0
  70. package/dist/{perpetual → cjs/perpetual}/positions.d.ts +1 -1
  71. package/dist/cjs/perpetual/positions.d.ts.map +1 -0
  72. package/dist/{perpetual → cjs/perpetual}/positions.js +4 -4
  73. package/dist/cjs/perpetual/positions.js.map +1 -0
  74. package/dist/{perpetual → cjs/perpetual}/stream-client/perpetual-stream-connection.d.ts +1 -1
  75. package/dist/cjs/perpetual/stream-client/perpetual-stream-connection.d.ts.map +1 -0
  76. package/dist/{perpetual → cjs/perpetual}/stream-client/perpetual-stream-connection.js +9 -9
  77. package/dist/cjs/perpetual/stream-client/perpetual-stream-connection.js.map +1 -0
  78. package/dist/{perpetual → cjs/perpetual}/stream-client/stream-client.d.ts +1 -1
  79. package/dist/cjs/perpetual/stream-client/stream-client.d.ts.map +1 -0
  80. package/dist/{perpetual → cjs/perpetual}/stream-client/stream-client.js +16 -16
  81. package/dist/cjs/perpetual/stream-client/stream-client.js.map +1 -0
  82. package/dist/{perpetual → cjs/perpetual}/trades.d.ts +2 -2
  83. package/dist/cjs/perpetual/trades.d.ts.map +1 -0
  84. package/dist/{perpetual → cjs/perpetual}/trades.js +3 -3
  85. package/dist/cjs/perpetual/trades.js.map +1 -0
  86. package/dist/{perpetual → cjs/perpetual}/trading-client/account-module.d.ts +9 -9
  87. package/dist/cjs/perpetual/trading-client/account-module.d.ts.map +1 -0
  88. package/dist/{perpetual → cjs/perpetual}/trading-client/account-module.js +32 -34
  89. package/dist/cjs/perpetual/trading-client/account-module.js.map +1 -0
  90. package/dist/{perpetual → cjs/perpetual}/trading-client/base-module.d.ts +2 -2
  91. package/dist/cjs/perpetual/trading-client/base-module.d.ts.map +1 -0
  92. package/dist/{perpetual → cjs/perpetual}/trading-client/base-module.js +5 -5
  93. package/dist/cjs/perpetual/trading-client/base-module.js.map +1 -0
  94. package/dist/{perpetual → cjs/perpetual}/trading-client/info-module.d.ts +3 -3
  95. package/dist/cjs/perpetual/trading-client/info-module.d.ts.map +1 -0
  96. package/dist/{perpetual → cjs/perpetual}/trading-client/info-module.js +6 -6
  97. package/dist/cjs/perpetual/trading-client/info-module.js.map +1 -0
  98. package/dist/{perpetual → cjs/perpetual}/trading-client/markets-information-module.d.ts +3 -3
  99. package/dist/cjs/perpetual/trading-client/markets-information-module.d.ts.map +1 -0
  100. package/dist/{perpetual → cjs/perpetual}/trading-client/markets-information-module.js +14 -14
  101. package/dist/cjs/perpetual/trading-client/markets-information-module.js.map +1 -0
  102. package/dist/{perpetual → cjs/perpetual}/trading-client/order-management-module.d.ts +4 -4
  103. package/dist/cjs/perpetual/trading-client/order-management-module.d.ts.map +1 -0
  104. package/dist/{perpetual → cjs/perpetual}/trading-client/order-management-module.js +9 -9
  105. package/dist/cjs/perpetual/trading-client/order-management-module.js.map +1 -0
  106. package/dist/{perpetual → cjs/perpetual}/trading-client/testnet-module.d.ts +4 -4
  107. package/dist/cjs/perpetual/trading-client/testnet-module.d.ts.map +1 -0
  108. package/dist/{perpetual → cjs/perpetual}/trading-client/testnet-module.js +6 -6
  109. package/dist/cjs/perpetual/trading-client/testnet-module.js.map +1 -0
  110. package/dist/{perpetual → cjs/perpetual}/trading-client/trading-client.d.ts +10 -10
  111. package/dist/cjs/perpetual/trading-client/trading-client.d.ts.map +1 -0
  112. package/dist/{perpetual → cjs/perpetual}/trading-client/trading-client.js +14 -14
  113. package/dist/cjs/perpetual/trading-client/trading-client.js.map +1 -0
  114. package/dist/{perpetual → cjs/perpetual}/transfer-object.d.ts +3 -3
  115. package/dist/cjs/perpetual/transfer-object.d.ts.map +1 -0
  116. package/dist/{perpetual → cjs/perpetual}/transfer-object.js +11 -11
  117. package/dist/cjs/perpetual/transfer-object.js.map +1 -0
  118. package/dist/{perpetual → cjs/perpetual}/transfers.d.ts +2 -2
  119. package/dist/cjs/perpetual/transfers.d.ts.map +1 -0
  120. package/dist/{perpetual → cjs/perpetual}/transfers.js +5 -5
  121. package/dist/cjs/perpetual/transfers.js.map +1 -0
  122. package/dist/{perpetual → cjs/perpetual}/user-client/onboarding.d.ts +2 -2
  123. package/dist/cjs/perpetual/user-client/onboarding.d.ts.map +1 -0
  124. package/dist/{perpetual → cjs/perpetual}/user-client/onboarding.js +8 -8
  125. package/dist/cjs/perpetual/user-client/onboarding.js.map +1 -0
  126. package/dist/{perpetual → cjs/perpetual}/user-client/user-client.d.ts +3 -3
  127. package/dist/cjs/perpetual/user-client/user-client.d.ts.map +1 -0
  128. package/dist/{perpetual → cjs/perpetual}/user-client/user-client.js +25 -26
  129. package/dist/cjs/perpetual/user-client/user-client.js.map +1 -0
  130. package/dist/{perpetual → cjs/perpetual}/withdrawal-object.d.ts +3 -3
  131. package/dist/cjs/perpetual/withdrawal-object.d.ts.map +1 -0
  132. package/dist/{perpetual → cjs/perpetual}/withdrawal-object.js +11 -11
  133. package/dist/cjs/perpetual/withdrawal-object.js.map +1 -0
  134. package/dist/{perpetual → cjs/perpetual}/withdrawals.d.ts +2 -2
  135. package/dist/cjs/perpetual/withdrawals.d.ts.map +1 -0
  136. package/dist/{perpetual → cjs/perpetual}/withdrawals.js +4 -4
  137. package/dist/cjs/perpetual/withdrawals.js.map +1 -0
  138. package/dist/cjs/utils/date.d.ts.map +1 -0
  139. package/dist/cjs/utils/date.js.map +1 -0
  140. package/dist/cjs/utils/env.d.ts.map +1 -0
  141. package/dist/{utils → cjs/utils}/env.js +1 -3
  142. package/dist/cjs/utils/env.js.map +1 -0
  143. package/dist/{utils → cjs/utils}/http.d.ts +1 -1
  144. package/dist/cjs/utils/http.d.ts.map +1 -0
  145. package/dist/{utils → cjs/utils}/http.js +14 -14
  146. package/dist/cjs/utils/http.js.map +1 -0
  147. package/dist/cjs/utils/model.d.ts.map +1 -0
  148. package/dist/cjs/utils/model.js.map +1 -0
  149. package/dist/cjs/utils/nonce.d.ts.map +1 -0
  150. package/dist/cjs/utils/nonce.js.map +1 -0
  151. package/dist/cjs/utils/string.d.ts.map +1 -0
  152. package/dist/cjs/utils/string.js.map +1 -0
  153. package/dist/cjs/utils/websocket.d.ts +33 -0
  154. package/dist/cjs/utils/websocket.d.ts.map +1 -0
  155. package/dist/cjs/utils/websocket.js +96 -0
  156. package/dist/cjs/utils/websocket.js.map +1 -0
  157. package/dist/esm/config.d.ts +11 -0
  158. package/dist/esm/config.d.ts.map +1 -0
  159. package/dist/esm/config.js +12 -0
  160. package/dist/esm/config.js.map +1 -0
  161. package/dist/esm/errors.d.ts +25 -0
  162. package/dist/esm/errors.d.ts.map +1 -0
  163. package/dist/esm/errors.js +38 -0
  164. package/dist/esm/errors.js.map +1 -0
  165. package/dist/esm/index.d.ts +40 -0
  166. package/dist/esm/index.d.ts.map +1 -0
  167. package/dist/esm/index.js +58 -0
  168. package/dist/esm/index.js.map +1 -0
  169. package/dist/esm/package.json +3 -0
  170. package/dist/esm/perpetual/accounts.d.ts +147 -0
  171. package/dist/esm/perpetual/accounts.d.ts.map +1 -0
  172. package/dist/esm/perpetual/accounts.js +225 -0
  173. package/dist/esm/perpetual/accounts.js.map +1 -0
  174. package/dist/esm/perpetual/amounts.d.ts +41 -0
  175. package/dist/esm/perpetual/amounts.d.ts.map +1 -0
  176. package/dist/esm/perpetual/amounts.js +70 -0
  177. package/dist/esm/perpetual/amounts.js.map +1 -0
  178. package/dist/esm/perpetual/assets.d.ts +74 -0
  179. package/dist/esm/perpetual/assets.d.ts.map +1 -0
  180. package/dist/esm/perpetual/assets.js +111 -0
  181. package/dist/esm/perpetual/assets.js.map +1 -0
  182. package/dist/esm/perpetual/bridges.d.ts +29 -0
  183. package/dist/esm/perpetual/bridges.d.ts.map +1 -0
  184. package/dist/esm/perpetual/bridges.js +39 -0
  185. package/dist/esm/perpetual/bridges.js.map +1 -0
  186. package/dist/esm/perpetual/candles.d.ts +26 -0
  187. package/dist/esm/perpetual/candles.d.ts.map +1 -0
  188. package/dist/esm/perpetual/candles.js +25 -0
  189. package/dist/esm/perpetual/candles.js.map +1 -0
  190. package/dist/esm/perpetual/clients.d.ts +15 -0
  191. package/dist/esm/perpetual/clients.d.ts.map +1 -0
  192. package/dist/esm/perpetual/clients.js +21 -0
  193. package/dist/esm/perpetual/clients.js.map +1 -0
  194. package/dist/esm/perpetual/configuration.d.ts +39 -0
  195. package/dist/esm/perpetual/configuration.d.ts.map +1 -0
  196. package/dist/esm/perpetual/configuration.js +56 -0
  197. package/dist/esm/perpetual/configuration.js.map +1 -0
  198. package/dist/esm/perpetual/crypto/signer.d.ts +164 -0
  199. package/dist/esm/perpetual/crypto/signer.d.ts.map +1 -0
  200. package/dist/esm/perpetual/crypto/signer.js +302 -0
  201. package/dist/esm/perpetual/crypto/signer.js.map +1 -0
  202. package/dist/esm/perpetual/custom-signer.d.ts +51 -0
  203. package/dist/esm/perpetual/custom-signer.d.ts.map +1 -0
  204. package/dist/esm/perpetual/custom-signer.js +15 -0
  205. package/dist/esm/perpetual/custom-signer.js.map +1 -0
  206. package/dist/esm/perpetual/fees.d.ts +20 -0
  207. package/dist/esm/perpetual/fees.d.ts.map +1 -0
  208. package/dist/esm/perpetual/fees.js +28 -0
  209. package/dist/esm/perpetual/fees.js.map +1 -0
  210. package/dist/esm/perpetual/funding-rates.d.ts +15 -0
  211. package/dist/esm/perpetual/funding-rates.d.ts.map +1 -0
  212. package/dist/esm/perpetual/funding-rates.js +19 -0
  213. package/dist/esm/perpetual/funding-rates.js.map +1 -0
  214. package/dist/esm/perpetual/markets.d.ts +83 -0
  215. package/dist/esm/perpetual/markets.d.ts.map +1 -0
  216. package/dist/esm/perpetual/markets.js +113 -0
  217. package/dist/esm/perpetual/markets.js.map +1 -0
  218. package/dist/esm/perpetual/order-object-settlement.d.ts +43 -0
  219. package/dist/esm/perpetual/order-object-settlement.d.ts.map +1 -0
  220. package/dist/esm/perpetual/order-object-settlement.js +111 -0
  221. package/dist/esm/perpetual/order-object-settlement.js.map +1 -0
  222. package/dist/esm/perpetual/order-object.d.ts +38 -0
  223. package/dist/esm/perpetual/order-object.d.ts.map +1 -0
  224. package/dist/esm/perpetual/order-object.js +82 -0
  225. package/dist/esm/perpetual/order-object.js.map +1 -0
  226. package/dist/esm/perpetual/orderbooks.d.ts +23 -0
  227. package/dist/esm/perpetual/orderbooks.d.ts.map +1 -0
  228. package/dist/esm/perpetual/orderbooks.js +31 -0
  229. package/dist/esm/perpetual/orderbooks.js.map +1 -0
  230. package/dist/esm/perpetual/orders.d.ts +207 -0
  231. package/dist/esm/perpetual/orders.d.ts.map +1 -0
  232. package/dist/esm/perpetual/orders.js +257 -0
  233. package/dist/esm/perpetual/orders.js.map +1 -0
  234. package/dist/esm/perpetual/positions.d.ts +80 -0
  235. package/dist/esm/perpetual/positions.d.ts.map +1 -0
  236. package/dist/esm/perpetual/positions.js +88 -0
  237. package/dist/esm/perpetual/positions.js.map +1 -0
  238. package/dist/esm/perpetual/stream-client/perpetual-stream-connection.d.ts +47 -0
  239. package/dist/esm/perpetual/stream-client/perpetual-stream-connection.d.ts.map +1 -0
  240. package/dist/esm/perpetual/stream-client/perpetual-stream-connection.js +118 -0
  241. package/dist/esm/perpetual/stream-client/perpetual-stream-connection.js.map +1 -0
  242. package/dist/esm/perpetual/stream-client/stream-client.d.ts +62 -0
  243. package/dist/esm/perpetual/stream-client/stream-client.d.ts.map +1 -0
  244. package/dist/esm/perpetual/stream-client/stream-client.js +103 -0
  245. package/dist/esm/perpetual/stream-client/stream-client.js.map +1 -0
  246. package/dist/esm/perpetual/trades.d.ts +44 -0
  247. package/dist/esm/perpetual/trades.d.ts.map +1 -0
  248. package/dist/esm/perpetual/trades.js +43 -0
  249. package/dist/esm/perpetual/trades.js.map +1 -0
  250. package/dist/esm/perpetual/trading-client/account-module.d.ts +192 -0
  251. package/dist/esm/perpetual/trading-client/account-module.d.ts.map +1 -0
  252. package/dist/esm/perpetual/trading-client/account-module.js +353 -0
  253. package/dist/esm/perpetual/trading-client/account-module.js.map +1 -0
  254. package/dist/esm/perpetual/trading-client/base-module.d.ts +27 -0
  255. package/dist/esm/perpetual/trading-client/base-module.d.ts.map +1 -0
  256. package/dist/esm/perpetual/trading-client/base-module.js +45 -0
  257. package/dist/esm/perpetual/trading-client/base-module.js.map +1 -0
  258. package/dist/esm/perpetual/trading-client/info-module.d.ts +24 -0
  259. package/dist/esm/perpetual/trading-client/info-module.d.ts.map +1 -0
  260. package/dist/esm/perpetual/trading-client/info-module.js +29 -0
  261. package/dist/esm/perpetual/trading-client/info-module.js.map +1 -0
  262. package/dist/esm/perpetual/trading-client/markets-information-module.d.ts +53 -0
  263. package/dist/esm/perpetual/trading-client/markets-information-module.d.ts.map +1 -0
  264. package/dist/esm/perpetual/trading-client/markets-information-module.js +102 -0
  265. package/dist/esm/perpetual/trading-client/markets-information-module.js.map +1 -0
  266. package/dist/esm/perpetual/trading-client/order-management-module.d.ts +40 -0
  267. package/dist/esm/perpetual/trading-client/order-management-module.d.ts.map +1 -0
  268. package/dist/esm/perpetual/trading-client/order-management-module.js +67 -0
  269. package/dist/esm/perpetual/trading-client/order-management-module.js.map +1 -0
  270. package/dist/esm/perpetual/trading-client/testnet-module.d.ts +27 -0
  271. package/dist/esm/perpetual/trading-client/testnet-module.d.ts.map +1 -0
  272. package/dist/esm/perpetual/trading-client/testnet-module.js +41 -0
  273. package/dist/esm/perpetual/trading-client/testnet-module.js.map +1 -0
  274. package/dist/esm/perpetual/trading-client/trading-client.d.ts +75 -0
  275. package/dist/esm/perpetual/trading-client/trading-client.d.ts.map +1 -0
  276. package/dist/esm/perpetual/trading-client/trading-client.js +111 -0
  277. package/dist/esm/perpetual/trading-client/trading-client.js.map +1 -0
  278. package/dist/esm/perpetual/transfer-object.d.ts +12 -0
  279. package/dist/esm/perpetual/transfer-object.d.ts.map +1 -0
  280. package/dist/esm/perpetual/transfer-object.js +54 -0
  281. package/dist/esm/perpetual/transfer-object.js.map +1 -0
  282. package/dist/esm/perpetual/transfers.d.ts +54 -0
  283. package/dist/esm/perpetual/transfers.d.ts.map +1 -0
  284. package/dist/esm/perpetual/transfers.js +83 -0
  285. package/dist/esm/perpetual/transfers.js.map +1 -0
  286. package/dist/esm/perpetual/user-client/onboarding.d.ts +101 -0
  287. package/dist/esm/perpetual/user-client/onboarding.d.ts.map +1 -0
  288. package/dist/esm/perpetual/user-client/onboarding.js +234 -0
  289. package/dist/esm/perpetual/user-client/onboarding.js.map +1 -0
  290. package/dist/esm/perpetual/user-client/user-client.d.ts +45 -0
  291. package/dist/esm/perpetual/user-client/user-client.d.ts.map +1 -0
  292. package/dist/esm/perpetual/user-client/user-client.js +180 -0
  293. package/dist/esm/perpetual/user-client/user-client.js.map +1 -0
  294. package/dist/esm/perpetual/withdrawal-object.d.ts +12 -0
  295. package/dist/esm/perpetual/withdrawal-object.d.ts.map +1 -0
  296. package/dist/esm/perpetual/withdrawal-object.js +48 -0
  297. package/dist/esm/perpetual/withdrawal-object.js.map +1 -0
  298. package/dist/esm/perpetual/withdrawals.d.ts +40 -0
  299. package/dist/esm/perpetual/withdrawals.d.ts.map +1 -0
  300. package/dist/esm/perpetual/withdrawals.js +59 -0
  301. package/dist/esm/perpetual/withdrawals.js.map +1 -0
  302. package/dist/esm/utils/date.d.ts +13 -0
  303. package/dist/esm/utils/date.d.ts.map +1 -0
  304. package/dist/esm/utils/date.js +17 -0
  305. package/dist/esm/utils/date.js.map +1 -0
  306. package/dist/esm/utils/env.d.ts +50 -0
  307. package/dist/esm/utils/env.d.ts.map +1 -0
  308. package/dist/esm/utils/env.js +145 -0
  309. package/dist/esm/utils/env.js.map +1 -0
  310. package/dist/esm/utils/http.d.ts +98 -0
  311. package/dist/esm/utils/http.d.ts.map +1 -0
  312. package/dist/esm/utils/http.js +278 -0
  313. package/dist/esm/utils/http.js.map +1 -0
  314. package/dist/esm/utils/model.d.ts +35 -0
  315. package/dist/esm/utils/model.d.ts.map +1 -0
  316. package/dist/esm/utils/model.js +77 -0
  317. package/dist/esm/utils/model.js.map +1 -0
  318. package/dist/esm/utils/nonce.d.ts +9 -0
  319. package/dist/esm/utils/nonce.d.ts.map +1 -0
  320. package/dist/esm/utils/nonce.js +11 -0
  321. package/dist/esm/utils/nonce.js.map +1 -0
  322. package/dist/esm/utils/string.d.ts +10 -0
  323. package/dist/esm/utils/string.d.ts.map +1 -0
  324. package/dist/esm/utils/string.js +17 -0
  325. package/dist/esm/utils/string.js.map +1 -0
  326. package/dist/esm/utils/websocket.d.ts +33 -0
  327. package/dist/esm/utils/websocket.d.ts.map +1 -0
  328. package/dist/esm/utils/websocket.js +93 -0
  329. package/dist/esm/utils/websocket.js.map +1 -0
  330. package/package.json +91 -60
  331. package/vite.config.example.ts +49 -0
  332. package/wasm/stark_crypto_wasm_bg.wasm +0 -0
  333. package/dist/config.d.ts.map +0 -1
  334. package/dist/config.js.map +0 -1
  335. package/dist/errors.d.ts.map +0 -1
  336. package/dist/errors.js.map +0 -1
  337. package/dist/index.d.ts.map +0 -1
  338. package/dist/index.js.map +0 -1
  339. package/dist/perpetual/accounts.d.ts.map +0 -1
  340. package/dist/perpetual/accounts.js.map +0 -1
  341. package/dist/perpetual/amounts.d.ts.map +0 -1
  342. package/dist/perpetual/amounts.js.map +0 -1
  343. package/dist/perpetual/assets.d.ts.map +0 -1
  344. package/dist/perpetual/assets.js.map +0 -1
  345. package/dist/perpetual/bridges.d.ts.map +0 -1
  346. package/dist/perpetual/bridges.js.map +0 -1
  347. package/dist/perpetual/candles.d.ts.map +0 -1
  348. package/dist/perpetual/candles.js.map +0 -1
  349. package/dist/perpetual/clients.d.ts.map +0 -1
  350. package/dist/perpetual/clients.js.map +0 -1
  351. package/dist/perpetual/configuration.d.ts.map +0 -1
  352. package/dist/perpetual/configuration.js.map +0 -1
  353. package/dist/perpetual/crypto/signer.d.ts.map +0 -1
  354. package/dist/perpetual/crypto/signer.js.map +0 -1
  355. package/dist/perpetual/custom-signer.d.ts.map +0 -1
  356. package/dist/perpetual/custom-signer.js.map +0 -1
  357. package/dist/perpetual/fees.d.ts.map +0 -1
  358. package/dist/perpetual/fees.js.map +0 -1
  359. package/dist/perpetual/funding-rates.d.ts.map +0 -1
  360. package/dist/perpetual/funding-rates.js.map +0 -1
  361. package/dist/perpetual/markets.d.ts.map +0 -1
  362. package/dist/perpetual/markets.js.map +0 -1
  363. package/dist/perpetual/order-object-settlement.d.ts.map +0 -1
  364. package/dist/perpetual/order-object-settlement.js.map +0 -1
  365. package/dist/perpetual/order-object.d.ts.map +0 -1
  366. package/dist/perpetual/order-object.js +0 -90
  367. package/dist/perpetual/order-object.js.map +0 -1
  368. package/dist/perpetual/orderbooks.d.ts.map +0 -1
  369. package/dist/perpetual/orderbooks.js.map +0 -1
  370. package/dist/perpetual/orders.d.ts.map +0 -1
  371. package/dist/perpetual/orders.js.map +0 -1
  372. package/dist/perpetual/positions.d.ts.map +0 -1
  373. package/dist/perpetual/positions.js.map +0 -1
  374. package/dist/perpetual/stream-client/perpetual-stream-connection.d.ts.map +0 -1
  375. package/dist/perpetual/stream-client/perpetual-stream-connection.js.map +0 -1
  376. package/dist/perpetual/stream-client/stream-client.d.ts.map +0 -1
  377. package/dist/perpetual/stream-client/stream-client.js.map +0 -1
  378. package/dist/perpetual/trades.d.ts.map +0 -1
  379. package/dist/perpetual/trades.js.map +0 -1
  380. package/dist/perpetual/trading-client/account-module.d.ts.map +0 -1
  381. package/dist/perpetual/trading-client/account-module.js.map +0 -1
  382. package/dist/perpetual/trading-client/base-module.d.ts.map +0 -1
  383. package/dist/perpetual/trading-client/base-module.js.map +0 -1
  384. package/dist/perpetual/trading-client/info-module.d.ts.map +0 -1
  385. package/dist/perpetual/trading-client/info-module.js.map +0 -1
  386. package/dist/perpetual/trading-client/markets-information-module.d.ts.map +0 -1
  387. package/dist/perpetual/trading-client/markets-information-module.js.map +0 -1
  388. package/dist/perpetual/trading-client/order-management-module.d.ts.map +0 -1
  389. package/dist/perpetual/trading-client/order-management-module.js.map +0 -1
  390. package/dist/perpetual/trading-client/testnet-module.d.ts.map +0 -1
  391. package/dist/perpetual/trading-client/testnet-module.js.map +0 -1
  392. package/dist/perpetual/trading-client/trading-client.d.ts.map +0 -1
  393. package/dist/perpetual/trading-client/trading-client.js.map +0 -1
  394. package/dist/perpetual/transfer-object.d.ts.map +0 -1
  395. package/dist/perpetual/transfer-object.js.map +0 -1
  396. package/dist/perpetual/transfers.d.ts.map +0 -1
  397. package/dist/perpetual/transfers.js.map +0 -1
  398. package/dist/perpetual/user-client/onboarding.d.ts.map +0 -1
  399. package/dist/perpetual/user-client/onboarding.js.map +0 -1
  400. package/dist/perpetual/user-client/user-client.d.ts.map +0 -1
  401. package/dist/perpetual/user-client/user-client.js.map +0 -1
  402. package/dist/perpetual/withdrawal-object.d.ts.map +0 -1
  403. package/dist/perpetual/withdrawal-object.js.map +0 -1
  404. package/dist/perpetual/withdrawals.d.ts.map +0 -1
  405. package/dist/perpetual/withdrawals.js.map +0 -1
  406. package/dist/utils/date.d.ts.map +0 -1
  407. package/dist/utils/date.js.map +0 -1
  408. package/dist/utils/env.d.ts.map +0 -1
  409. package/dist/utils/env.js.map +0 -1
  410. package/dist/utils/http.d.ts.map +0 -1
  411. package/dist/utils/http.js.map +0 -1
  412. package/dist/utils/model.d.ts.map +0 -1
  413. package/dist/utils/model.js.map +0 -1
  414. package/dist/utils/nonce.d.ts.map +0 -1
  415. package/dist/utils/nonce.js.map +0 -1
  416. package/dist/utils/string.d.ts.map +0 -1
  417. package/dist/utils/string.js.map +0 -1
  418. /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
  419. /package/dist/{config.js → cjs/config.js} +0 -0
  420. /package/dist/{errors.d.ts → cjs/errors.d.ts} +0 -0
  421. /package/dist/{errors.js → cjs/errors.js} +0 -0
  422. /package/dist/{perpetual → cjs/perpetual}/configuration.d.ts +0 -0
  423. /package/dist/{perpetual → cjs/perpetual}/configuration.js +0 -0
  424. /package/dist/{perpetual → cjs/perpetual}/crypto/signer.d.ts +0 -0
  425. /package/dist/{perpetual → cjs/perpetual}/custom-signer.d.ts +0 -0
  426. /package/dist/{perpetual → cjs/perpetual}/custom-signer.js +0 -0
  427. /package/dist/{utils → cjs/utils}/date.d.ts +0 -0
  428. /package/dist/{utils → cjs/utils}/date.js +0 -0
  429. /package/dist/{utils → cjs/utils}/env.d.ts +0 -0
  430. /package/dist/{utils → cjs/utils}/model.d.ts +0 -0
  431. /package/dist/{utils → cjs/utils}/model.js +0 -0
  432. /package/dist/{utils → cjs/utils}/nonce.d.ts +0 -0
  433. /package/dist/{utils → cjs/utils}/nonce.js +0 -0
  434. /package/dist/{utils → cjs/utils}/string.d.ts +0 -0
  435. /package/dist/{utils → cjs/utils}/string.js +0 -0
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Transfer models
3
+ */
4
+ import { X10BaseModel } from '../utils/model.js';
5
+ /**
6
+ * Stark transfer settlement
7
+ */
8
+ export class StarkTransferSettlement extends X10BaseModel {
9
+ amount;
10
+ assetId;
11
+ expirationTimestamp;
12
+ nonce;
13
+ receiverPositionId;
14
+ receiverPublicKey;
15
+ senderPositionId;
16
+ senderPublicKey;
17
+ signature;
18
+ constructor(amount, assetId, expirationTimestamp, nonce, receiverPositionId, receiverPublicKey, senderPositionId, senderPublicKey, signature) {
19
+ super();
20
+ this.amount = amount;
21
+ this.assetId = assetId;
22
+ this.expirationTimestamp = expirationTimestamp;
23
+ this.nonce = nonce;
24
+ this.receiverPositionId = receiverPositionId;
25
+ this.receiverPublicKey = receiverPublicKey;
26
+ this.senderPositionId = senderPositionId;
27
+ this.senderPublicKey = senderPublicKey;
28
+ this.signature = signature;
29
+ }
30
+ }
31
+ /**
32
+ * Perpetual transfer model
33
+ */
34
+ export class PerpetualTransferModel extends X10BaseModel {
35
+ fromAccount;
36
+ toAccount;
37
+ amount;
38
+ transferredAsset;
39
+ settlement;
40
+ constructor(fromAccount, toAccount, amount, transferredAsset, settlement) {
41
+ super();
42
+ this.fromAccount = fromAccount;
43
+ this.toAccount = toAccount;
44
+ this.amount = amount;
45
+ this.transferredAsset = transferredAsset;
46
+ this.settlement = settlement;
47
+ }
48
+ }
49
+ /**
50
+ * On-chain perpetual transfer model
51
+ */
52
+ export class OnChainPerpetualTransferModel extends X10BaseModel {
53
+ fromVault;
54
+ toVault;
55
+ amount;
56
+ settlement;
57
+ transferredAsset;
58
+ constructor(fromVault, toVault, amount, settlement, transferredAsset) {
59
+ super();
60
+ this.fromVault = fromVault;
61
+ this.toVault = toVault;
62
+ this.amount = amount;
63
+ this.settlement = settlement;
64
+ this.transferredAsset = transferredAsset;
65
+ }
66
+ }
67
+ /**
68
+ * Transfer response model
69
+ */
70
+ export class TransferResponseModel extends X10BaseModel {
71
+ validSignature;
72
+ id;
73
+ hashCalculated;
74
+ starkExRepresentation;
75
+ constructor(validSignature, id, hashCalculated, starkExRepresentation) {
76
+ super();
77
+ this.validSignature = validSignature;
78
+ this.id = id;
79
+ this.hashCalculated = hashCalculated;
80
+ this.starkExRepresentation = starkExRepresentation;
81
+ }
82
+ }
83
+ //# sourceMappingURL=transfers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../../src/perpetual/transfers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAY,MAAM,mBAAmB,CAAC;AAG3D;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,MAAM,CAAS;IACf,OAAO,CAAW;IAClB,mBAAmB,CAAS;IAC5B,KAAK,CAAS;IACd,kBAAkB,CAAS;IAC3B,iBAAiB,CAAW;IAC5B,gBAAgB,CAAS;IACzB,eAAe,CAAW;IAC1B,SAAS,CAA2B;IAEpC,YACE,MAAc,EACd,OAAiB,EACjB,mBAA2B,EAC3B,KAAa,EACb,kBAA0B,EAC1B,iBAA2B,EAC3B,gBAAwB,EACxB,eAAyB,EACzB,SAAmC;QAEnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,MAAM,CAAU;IAChB,gBAAgB,CAAS;IACzB,UAAU,CAA0B;IAEpC,YACE,WAAmB,EACnB,SAAiB,EACjB,MAAe,EACf,gBAAwB,EACxB,UAAmC;QAEnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,YAAY;IAC7D,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,UAAU,CAA0B;IACpC,gBAAgB,CAAS;IAEzB,YACE,SAAiB,EACjB,OAAe,EACf,MAAe,EACf,UAAmC,EACnC,gBAAwB;QAExB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,cAAc,CAAU;IACxB,EAAE,CAAU;IACZ,cAAc,CAAU;IACxB,qBAAqB,CAAuB;IAE5C,YACE,cAAuB,EACvB,EAAW,EACX,cAAuB,EACvB,qBAA2C;QAE3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Onboarding logic for deriving L2 keys from L1 Ethereum account
3
+ */
4
+ import { AccountModel } from '../accounts.js';
5
+ import { X10BaseModel } from '../../utils/model.js';
6
+ /**
7
+ * Stark key pair
8
+ */
9
+ export declare class StarkKeyPair {
10
+ private: bigint;
11
+ public: bigint;
12
+ constructor(privateKey: bigint, publicKey: bigint);
13
+ get publicHex(): string;
14
+ get privateHex(): string;
15
+ }
16
+ /**
17
+ * Onboarded client model
18
+ */
19
+ export declare class OnboardedClientModel extends X10BaseModel {
20
+ l1Address: string;
21
+ defaultAccount: AccountModel;
22
+ constructor(l1Address: string, defaultAccount: AccountModel);
23
+ }
24
+ /**
25
+ * On-boarded account
26
+ */
27
+ export interface OnBoardedAccount {
28
+ account: AccountModel;
29
+ l2KeyPair: StarkKeyPair;
30
+ }
31
+ /**
32
+ * Account registration
33
+ */
34
+ export declare class AccountRegistration {
35
+ accountIndex: number;
36
+ wallet: string;
37
+ tosAccepted: boolean;
38
+ time: Date;
39
+ action: string;
40
+ host: string;
41
+ constructor(accountIndex: number, wallet: string, tosAccepted: boolean, time: Date, action: string, host: string);
42
+ get timeString(): string;
43
+ /**
44
+ * Convert to EIP-712 signable message
45
+ */
46
+ toSignableMessage(signingDomain: string): {
47
+ domain: any;
48
+ types: any;
49
+ message: any;
50
+ primaryType?: string;
51
+ };
52
+ toJson(): Record<string, any>;
53
+ }
54
+ /**
55
+ * Onboarding payload
56
+ */
57
+ export declare class OnboardingPayLoad {
58
+ l1Signature: string;
59
+ l2Key: bigint;
60
+ l2R: bigint;
61
+ l2S: bigint;
62
+ accountRegistration: AccountRegistration;
63
+ referralCode?: string;
64
+ constructor(l1Signature: string, l2Key: bigint, l2R: bigint, l2S: bigint, accountRegistration: AccountRegistration, referralCode?: string);
65
+ toJson(): Record<string, any>;
66
+ }
67
+ /**
68
+ * Sub-account onboarding payload
69
+ */
70
+ export declare class SubAccountOnboardingPayload {
71
+ l2Key: bigint;
72
+ l2R: bigint;
73
+ l2S: bigint;
74
+ accountRegistration: AccountRegistration;
75
+ description: string;
76
+ constructor(l2Key: bigint, l2R: bigint, l2S: bigint, accountRegistration: AccountRegistration, description: string);
77
+ toJson(): Record<string, any>;
78
+ }
79
+ export declare const REGISTER_ACTION = "REGISTER";
80
+ export declare const SUB_ACCOUNT_ACTION = "CREATE_SUB_ACCOUNT";
81
+ /**
82
+ * Get registration struct to sign
83
+ */
84
+ export declare function getRegistrationStructToSign(accountIndex: number, address: string, timestamp: Date, action: string, host: string): AccountRegistration;
85
+ /**
86
+ * Get key derivation struct to sign (EIP-712)
87
+ */
88
+ export declare function getKeyDerivationStructToSign(accountIndex: number, address: string, signingDomain: string): any;
89
+ /**
90
+ * Get L2 keys from L1 account
91
+ */
92
+ export declare function getL2KeysFromL1Account(l1PrivateKey: string, accountIndex: number, signingDomain: string): Promise<StarkKeyPair>;
93
+ /**
94
+ * Get onboarding payload
95
+ */
96
+ export declare function getOnboardingPayload(l1PrivateKey: string, signingDomain: string, keyPair: StarkKeyPair, host: string, referralCode?: string, time?: Date): Promise<OnboardingPayLoad>;
97
+ /**
98
+ * Get sub-account creation payload
99
+ */
100
+ export declare function getSubAccountCreationPayload(accountIndex: number, l1Address: string, keyPair: StarkKeyPair, description: string, host: string, time?: Date): Promise<SubAccountOnboardingPayload>;
101
+ //# sourceMappingURL=onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../../../src/perpetual/user-client/onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Onboarding logic for deriving L2 keys from L1 Ethereum account
3
+ */
4
+ import { ethers } from 'ethers';
5
+ import { X10BaseModel } from '../../utils/model.js';
6
+ import { generateKeypairFromEthSignature, pedersenHash, sign as starkSign } from '../crypto/signer.js';
7
+ /**
8
+ * Stark key pair
9
+ */
10
+ export class StarkKeyPair {
11
+ private;
12
+ public;
13
+ constructor(privateKey, publicKey) {
14
+ this.private = privateKey;
15
+ this.public = publicKey;
16
+ }
17
+ get publicHex() {
18
+ return '0x' + this.public.toString(16);
19
+ }
20
+ get privateHex() {
21
+ return '0x' + this.private.toString(16);
22
+ }
23
+ }
24
+ /**
25
+ * Onboarded client model
26
+ */
27
+ export class OnboardedClientModel extends X10BaseModel {
28
+ l1Address;
29
+ defaultAccount;
30
+ constructor(l1Address, defaultAccount) {
31
+ super();
32
+ this.l1Address = l1Address;
33
+ this.defaultAccount = defaultAccount;
34
+ }
35
+ }
36
+ /**
37
+ * Account registration
38
+ */
39
+ export class AccountRegistration {
40
+ accountIndex;
41
+ wallet;
42
+ tosAccepted;
43
+ time;
44
+ action;
45
+ host;
46
+ constructor(accountIndex, wallet, tosAccepted, time, action, host) {
47
+ this.accountIndex = accountIndex;
48
+ this.wallet = wallet;
49
+ this.tosAccepted = tosAccepted;
50
+ this.time = time;
51
+ this.action = action;
52
+ this.host = host;
53
+ }
54
+ get timeString() {
55
+ return this.time.toISOString().replace(/\.\d{3}Z$/, 'Z');
56
+ }
57
+ /**
58
+ * Convert to EIP-712 signable message
59
+ */
60
+ toSignableMessage(signingDomain) {
61
+ const domain = {
62
+ name: signingDomain,
63
+ };
64
+ // Ethers v6 expects types without EIP712Domain included
65
+ const types = {
66
+ AccountRegistration: [
67
+ { name: 'accountIndex', type: 'int8' },
68
+ { name: 'wallet', type: 'address' },
69
+ { name: 'tosAccepted', type: 'bool' },
70
+ { name: 'time', type: 'string' },
71
+ { name: 'action', type: 'string' },
72
+ { name: 'host', type: 'string' },
73
+ ],
74
+ };
75
+ const message = {
76
+ accountIndex: this.accountIndex,
77
+ wallet: this.wallet,
78
+ tosAccepted: this.tosAccepted,
79
+ time: this.timeString,
80
+ action: this.action,
81
+ host: this.host,
82
+ };
83
+ return {
84
+ domain,
85
+ types: types,
86
+ primaryType: 'AccountRegistration',
87
+ message,
88
+ };
89
+ }
90
+ toJson() {
91
+ return {
92
+ accountIndex: this.accountIndex,
93
+ wallet: this.wallet,
94
+ tosAccepted: this.tosAccepted,
95
+ time: this.timeString,
96
+ action: this.action,
97
+ host: this.host,
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * Onboarding payload
103
+ */
104
+ export class OnboardingPayLoad {
105
+ l1Signature;
106
+ l2Key;
107
+ l2R;
108
+ l2S;
109
+ accountRegistration;
110
+ referralCode;
111
+ constructor(l1Signature, l2Key, l2R, l2S, accountRegistration, referralCode) {
112
+ this.l1Signature = l1Signature;
113
+ this.l2Key = l2Key;
114
+ this.l2R = l2R;
115
+ this.l2S = l2S;
116
+ this.accountRegistration = accountRegistration;
117
+ this.referralCode = referralCode;
118
+ }
119
+ toJson() {
120
+ return {
121
+ l1Signature: this.l1Signature,
122
+ l2Key: '0x' + this.l2Key.toString(16),
123
+ l2Signature: {
124
+ r: '0x' + this.l2R.toString(16),
125
+ s: '0x' + this.l2S.toString(16),
126
+ },
127
+ accountCreation: this.accountRegistration.toJson(),
128
+ referralCode: this.referralCode,
129
+ };
130
+ }
131
+ }
132
+ /**
133
+ * Sub-account onboarding payload
134
+ */
135
+ export class SubAccountOnboardingPayload {
136
+ l2Key;
137
+ l2R;
138
+ l2S;
139
+ accountRegistration;
140
+ description;
141
+ constructor(l2Key, l2R, l2S, accountRegistration, description) {
142
+ this.l2Key = l2Key;
143
+ this.l2R = l2R;
144
+ this.l2S = l2S;
145
+ this.accountRegistration = accountRegistration;
146
+ this.description = description;
147
+ }
148
+ toJson() {
149
+ return {
150
+ l2Key: '0x' + this.l2Key.toString(16),
151
+ l2Signature: {
152
+ r: '0x' + this.l2R.toString(16),
153
+ s: '0x' + this.l2S.toString(16),
154
+ },
155
+ accountCreation: this.accountRegistration.toJson(),
156
+ description: this.description,
157
+ };
158
+ }
159
+ }
160
+ export const REGISTER_ACTION = 'REGISTER';
161
+ export const SUB_ACCOUNT_ACTION = 'CREATE_SUB_ACCOUNT';
162
+ /**
163
+ * Get registration struct to sign
164
+ */
165
+ export function getRegistrationStructToSign(accountIndex, address, timestamp, action, host) {
166
+ return new AccountRegistration(accountIndex, address, true, timestamp, action, host);
167
+ }
168
+ /**
169
+ * Get key derivation struct to sign (EIP-712)
170
+ */
171
+ export function getKeyDerivationStructToSign(accountIndex, address, signingDomain) {
172
+ const domain = {
173
+ name: signingDomain,
174
+ };
175
+ // Ethers v6 expects types without EIP712Domain included
176
+ const types = {
177
+ AccountCreation: [
178
+ { name: 'accountIndex', type: 'int8' },
179
+ { name: 'wallet', type: 'address' },
180
+ { name: 'tosAccepted', type: 'bool' },
181
+ ],
182
+ };
183
+ const message = {
184
+ accountIndex,
185
+ wallet: address,
186
+ tosAccepted: true,
187
+ };
188
+ return {
189
+ domain,
190
+ types,
191
+ primaryType: 'AccountCreation',
192
+ message,
193
+ };
194
+ }
195
+ /**
196
+ * Get L2 keys from L1 account
197
+ */
198
+ export async function getL2KeysFromL1Account(l1PrivateKey, accountIndex, signingDomain) {
199
+ const wallet = new ethers.Wallet(l1PrivateKey);
200
+ const struct = getKeyDerivationStructToSign(accountIndex, wallet.address, signingDomain);
201
+ // Sign with ethers.js EIP-712
202
+ const signature = await wallet.signTypedData(struct.domain, struct.types, struct.message);
203
+ // Generate keypair from Ethereum signature using WASM
204
+ const [privateKey, publicKey] = generateKeypairFromEthSignature(signature);
205
+ return new StarkKeyPair(privateKey, publicKey);
206
+ }
207
+ /**
208
+ * Get onboarding payload
209
+ */
210
+ export async function getOnboardingPayload(l1PrivateKey, signingDomain, keyPair, host, referralCode, time) {
211
+ const wallet = new ethers.Wallet(l1PrivateKey);
212
+ const timestamp = time || new Date();
213
+ const registrationPayload = getRegistrationStructToSign(0, wallet.address, timestamp, REGISTER_ACTION, host);
214
+ const signableMessage = registrationPayload.toSignableMessage(signingDomain);
215
+ const l1Signature = await wallet.signTypedData(signableMessage.domain, signableMessage.types, signableMessage.message);
216
+ // L2 message: pedersen_hash(l1_address, l2_public_key)
217
+ const l1AddressInt = BigInt(wallet.address);
218
+ const l2Message = pedersenHash(l1AddressInt, keyPair.public);
219
+ const [l2R, l2S] = starkSign(keyPair.private, l2Message);
220
+ return new OnboardingPayLoad(l1Signature, keyPair.public, l2R, l2S, registrationPayload, referralCode);
221
+ }
222
+ /**
223
+ * Get sub-account creation payload
224
+ */
225
+ export async function getSubAccountCreationPayload(accountIndex, l1Address, keyPair, description, host, time) {
226
+ const timestamp = time || new Date();
227
+ const registrationPayload = getRegistrationStructToSign(accountIndex, l1Address, timestamp, SUB_ACCOUNT_ACTION, host);
228
+ // L2 message: pedersen_hash(l1_address, l2_public_key)
229
+ const l1AddressInt = BigInt(l1Address);
230
+ const l2Message = pedersenHash(l1AddressInt, keyPair.public);
231
+ const [l2R, l2S] = starkSign(keyPair.private, l2Message);
232
+ return new SubAccountOnboardingPayload(keyPair.public, l2R, l2S, registrationPayload, description);
233
+ }
234
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../../src/perpetual/user-client/onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * User client for onboarding and account management
3
+ */
4
+ import { EndpointConfig } from '../configuration.js';
5
+ import { AccountModel, ApiKeyResponseModel } from '../accounts.js';
6
+ import { OnBoardedAccount } from './onboarding.js';
7
+ /**
8
+ * User client for onboarding and L1 account operations
9
+ */
10
+ export declare class UserClient {
11
+ private endpointConfig;
12
+ private l1PrivateKey;
13
+ constructor(endpointConfig: EndpointConfig, l1PrivateKey: () => string);
14
+ /**
15
+ * Get URL
16
+ */
17
+ private getUrl;
18
+ /**
19
+ * Onboard new account
20
+ */
21
+ onboard(referralCode?: string): Promise<OnBoardedAccount>;
22
+ /**
23
+ * Onboard sub-account
24
+ */
25
+ onboardSubaccount(accountIndex: number, description?: string): Promise<OnBoardedAccount>;
26
+ /**
27
+ * Get all accounts
28
+ */
29
+ getAccounts(): Promise<OnBoardedAccount[]>;
30
+ /**
31
+ * Create account API key
32
+ */
33
+ createAccountApiKey(account: AccountModel, description?: string): Promise<string>;
34
+ /**
35
+ * Delete account API key
36
+ * https://api.docs.extended.exchange/#delete-api-key
37
+ */
38
+ deleteAccountApiKey(account: AccountModel, apiKeyId: number): Promise<void>;
39
+ /**
40
+ * Get list of account API keys
41
+ * https://api.docs.extended.exchange/#get-api-keys
42
+ */
43
+ getAccountApiKeys(account: AccountModel): Promise<ApiKeyResponseModel[]>;
44
+ }
45
+ //# sourceMappingURL=user-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client.d.ts","sourceRoot":"","sources":["../../../../src/perpetual/user-client/user-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAsB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIvF,OAAO,EACL,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAMzB;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;gBAEvB,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,MAAM;IAKtE;;OAEG;IACH,OAAO,CAAC,MAAM;IAOd;;OAEG;IACG,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiC/D;;OAEG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAoE5B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuChD;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCvF;;;OAGG;IACG,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjF;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAwB/E"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * User client for onboarding and account management
3
+ */
4
+ import { ethers } from 'ethers';
5
+ import { ApiKeyRequestModel } from '../accounts.js';
6
+ import { SubAccountExists } from '../../errors.js';
7
+ import { getUrl, sendGetRequest, sendPostRequest, sendDeleteRequest } from '../../utils/http.js';
8
+ import { utcNow } from '../../utils/date.js';
9
+ import { getL2KeysFromL1Account, getOnboardingPayload, getSubAccountCreationPayload, } from './onboarding.js';
10
+ const L1_AUTH_SIGNATURE_HEADER = 'L1_SIGNATURE';
11
+ const L1_MESSAGE_TIME_HEADER = 'L1_MESSAGE_TIME';
12
+ const ACTIVE_ACCOUNT_HEADER = 'X-X10-ACTIVE-ACCOUNT';
13
+ /**
14
+ * User client for onboarding and L1 account operations
15
+ */
16
+ export class UserClient {
17
+ endpointConfig;
18
+ l1PrivateKey;
19
+ constructor(endpointConfig, l1PrivateKey) {
20
+ this.endpointConfig = endpointConfig;
21
+ this.l1PrivateKey = l1PrivateKey;
22
+ }
23
+ /**
24
+ * Get URL
25
+ */
26
+ getUrl(baseUrl, path, options = {}) {
27
+ return getUrl(`${baseUrl}${path}`, options);
28
+ }
29
+ /**
30
+ * Onboard new account
31
+ */
32
+ async onboard(referralCode) {
33
+ const keyPair = await getL2KeysFromL1Account(this.l1PrivateKey(), 0, this.endpointConfig.signingDomain);
34
+ const payload = await getOnboardingPayload(this.l1PrivateKey(), this.endpointConfig.signingDomain, keyPair, this.endpointConfig.onboardingUrl, referralCode);
35
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, '/auth/onboard');
36
+ const onboardingResponse = await sendPostRequest(url, payload.toJson());
37
+ const onboardedClient = onboardingResponse.data;
38
+ if (!onboardedClient) {
39
+ throw new Error('No account data returned from onboarding');
40
+ }
41
+ return {
42
+ account: onboardedClient.defaultAccount,
43
+ l2KeyPair: keyPair,
44
+ };
45
+ }
46
+ /**
47
+ * Onboard sub-account
48
+ */
49
+ async onboardSubaccount(accountIndex, description) {
50
+ const requestPath = '/auth/onboard/subaccount';
51
+ const finalDescription = description || `Subaccount ${accountIndex}`;
52
+ const wallet = new ethers.Wallet(this.l1PrivateKey());
53
+ const time = utcNow();
54
+ const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
55
+ const l1Message = `${requestPath}@${authTimeString}`;
56
+ // Sign with ethers
57
+ const l1Signature = await wallet.signMessage(l1Message);
58
+ const keyPair = await getL2KeysFromL1Account(this.l1PrivateKey(), accountIndex, this.endpointConfig.signingDomain);
59
+ const payload = await getSubAccountCreationPayload(accountIndex, wallet.address, keyPair, finalDescription, this.endpointConfig.onboardingUrl);
60
+ const headers = {
61
+ [L1_AUTH_SIGNATURE_HEADER]: l1Signature,
62
+ [L1_MESSAGE_TIME_HEADER]: authTimeString,
63
+ };
64
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
65
+ try {
66
+ const onboardingResponse = await sendPostRequest(url, payload.toJson(), undefined, headers, new Map([[409, SubAccountExists]]));
67
+ const onboardedAccount = onboardingResponse.data;
68
+ if (!onboardedAccount) {
69
+ throw new Error('No account data returned from onboarding');
70
+ }
71
+ return {
72
+ account: onboardedAccount,
73
+ l2KeyPair: keyPair,
74
+ };
75
+ }
76
+ catch (error) {
77
+ if (error instanceof SubAccountExists) {
78
+ const clientAccounts = await this.getAccounts();
79
+ const accountWithIndex = clientAccounts.find((acc) => acc.account.accountIndex === accountIndex);
80
+ if (!accountWithIndex) {
81
+ throw new SubAccountExists('Subaccount already exists but not found in client accounts');
82
+ }
83
+ return accountWithIndex;
84
+ }
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * Get all accounts
90
+ */
91
+ async getAccounts() {
92
+ const requestPath = '/api/v1/user/accounts';
93
+ const wallet = new ethers.Wallet(this.l1PrivateKey());
94
+ const time = utcNow();
95
+ const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
96
+ const l1Message = `${requestPath}@${authTimeString}`;
97
+ const l1Signature = await wallet.signMessage(l1Message);
98
+ const headers = {
99
+ [L1_AUTH_SIGNATURE_HEADER]: l1Signature,
100
+ [L1_MESSAGE_TIME_HEADER]: authTimeString,
101
+ };
102
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
103
+ const response = await sendGetRequest(url, undefined, headers);
104
+ const accounts = response.data || [];
105
+ const result = [];
106
+ for (const account of accounts) {
107
+ const keyPair = await getL2KeysFromL1Account(this.l1PrivateKey(), account.accountIndex, this.endpointConfig.signingDomain);
108
+ result.push({
109
+ account,
110
+ l2KeyPair: keyPair,
111
+ });
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Create account API key
117
+ */
118
+ async createAccountApiKey(account, description) {
119
+ const requestPath = '/api/v1/user/account/api-key';
120
+ const finalDescription = description || `trading api key for account ${account.accountId}`;
121
+ const wallet = new ethers.Wallet(this.l1PrivateKey());
122
+ const time = utcNow();
123
+ const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
124
+ const l1Message = `${requestPath}@${authTimeString}`;
125
+ const l1Signature = await wallet.signMessage(l1Message);
126
+ const headers = {
127
+ [L1_AUTH_SIGNATURE_HEADER]: l1Signature,
128
+ [L1_MESSAGE_TIME_HEADER]: authTimeString,
129
+ [ACTIVE_ACCOUNT_HEADER]: account.accountId.toString(),
130
+ };
131
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
132
+ const request = new ApiKeyRequestModel(finalDescription);
133
+ const response = await sendPostRequest(url, request.toApiRequestJson(), undefined, headers);
134
+ const responseData = response.data;
135
+ if (!responseData) {
136
+ throw new Error('No API key data returned from onboarding');
137
+ }
138
+ return responseData.key;
139
+ }
140
+ /**
141
+ * Delete account API key
142
+ * https://api.docs.extended.exchange/#delete-api-key
143
+ */
144
+ async deleteAccountApiKey(account, apiKeyId) {
145
+ const requestPath = `/api/v1/user/account/api-key/${apiKeyId}`;
146
+ const wallet = new ethers.Wallet(this.l1PrivateKey());
147
+ const time = utcNow();
148
+ const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
149
+ const l1Message = `${requestPath}@${authTimeString}`;
150
+ const l1Signature = await wallet.signMessage(l1Message);
151
+ const headers = {
152
+ [L1_AUTH_SIGNATURE_HEADER]: l1Signature,
153
+ [L1_MESSAGE_TIME_HEADER]: authTimeString,
154
+ [ACTIVE_ACCOUNT_HEADER]: account.accountId.toString(),
155
+ };
156
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
157
+ await sendDeleteRequest(url, undefined, headers);
158
+ }
159
+ /**
160
+ * Get list of account API keys
161
+ * https://api.docs.extended.exchange/#get-api-keys
162
+ */
163
+ async getAccountApiKeys(account) {
164
+ const requestPath = '/api/v1/user/account/api-key';
165
+ const wallet = new ethers.Wallet(this.l1PrivateKey());
166
+ const time = utcNow();
167
+ const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
168
+ const l1Message = `${requestPath}@${authTimeString}`;
169
+ const l1Signature = await wallet.signMessage(l1Message);
170
+ const headers = {
171
+ [L1_AUTH_SIGNATURE_HEADER]: l1Signature,
172
+ [L1_MESSAGE_TIME_HEADER]: authTimeString,
173
+ [ACTIVE_ACCOUNT_HEADER]: account.accountId.toString(),
174
+ };
175
+ const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
176
+ const response = await sendGetRequest(url, undefined, headers);
177
+ return response.data || [];
178
+ }
179
+ }
180
+ //# sourceMappingURL=user-client.js.map