@lightconexyz/lightcone-sdk 0.1.0 → 0.2.1

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 (381) hide show
  1. package/README.md +33 -206
  2. package/dist/auth/client.d.ts +25 -0
  3. package/dist/auth/client.d.ts.map +1 -0
  4. package/dist/auth/client.js +120 -0
  5. package/dist/auth/client.js.map +1 -0
  6. package/dist/auth/index.d.ts +73 -0
  7. package/dist/auth/index.d.ts.map +1 -0
  8. package/dist/auth/index.js +42 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/native.d.ts +8 -0
  11. package/dist/auth/native.d.ts.map +1 -0
  12. package/dist/auth/native.js +19 -0
  13. package/dist/auth/native.js.map +1 -0
  14. package/dist/auth.d.ts +1 -79
  15. package/dist/auth.d.ts.map +1 -1
  16. package/dist/auth.js +15 -145
  17. package/dist/auth.js.map +1 -1
  18. package/dist/client.d.ts +69 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +158 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/domain/admin/client.d.ts +17 -0
  23. package/dist/domain/admin/client.d.ts.map +1 -0
  24. package/dist/domain/admin/client.js +32 -0
  25. package/dist/domain/admin/client.js.map +1 -0
  26. package/dist/domain/admin/index.d.ts +7 -0
  27. package/dist/domain/admin/index.d.ts.map +1 -0
  28. package/dist/domain/admin/index.js +19 -0
  29. package/dist/domain/admin/index.js.map +1 -0
  30. package/dist/domain/admin/wire.d.ts +117 -0
  31. package/dist/domain/admin/wire.d.ts.map +1 -0
  32. package/dist/domain/admin/wire.js +3 -0
  33. package/dist/domain/admin/wire.js.map +1 -0
  34. package/dist/domain/index.d.ts +9 -0
  35. package/dist/domain/index.d.ts.map +1 -0
  36. package/dist/domain/index.js +45 -0
  37. package/dist/domain/index.js.map +1 -0
  38. package/dist/domain/market/client.d.ts +21 -0
  39. package/dist/domain/market/client.d.ts.map +1 -0
  40. package/dist/domain/market/client.js +70 -0
  41. package/dist/domain/market/client.js.map +1 -0
  42. package/dist/domain/market/convert.d.ts +8 -0
  43. package/dist/domain/market/convert.d.ts.map +1 -0
  44. package/dist/domain/market/convert.js +96 -0
  45. package/dist/domain/market/convert.js.map +1 -0
  46. package/dist/domain/market/index.d.ts +47 -0
  47. package/dist/domain/market/index.d.ts.map +1 -0
  48. package/dist/domain/market/index.js +58 -0
  49. package/dist/domain/market/index.js.map +1 -0
  50. package/dist/domain/market/outcome.d.ts +12 -0
  51. package/dist/domain/market/outcome.d.ts.map +1 -0
  52. package/dist/domain/market/outcome.js +28 -0
  53. package/dist/domain/market/outcome.js.map +1 -0
  54. package/dist/domain/market/tokens.d.ts +42 -0
  55. package/dist/domain/market/tokens.d.ts.map +1 -0
  56. package/dist/domain/market/tokens.js +106 -0
  57. package/dist/domain/market/tokens.js.map +1 -0
  58. package/dist/domain/market/wire.d.ts +116 -0
  59. package/dist/domain/market/wire.d.ts.map +1 -0
  60. package/dist/domain/market/wire.js +3 -0
  61. package/dist/domain/market/wire.js.map +1 -0
  62. package/dist/domain/order/client.d.ts +187 -0
  63. package/dist/domain/order/client.d.ts.map +1 -0
  64. package/dist/domain/order/client.js +122 -0
  65. package/dist/domain/order/client.js.map +1 -0
  66. package/dist/domain/order/convert.d.ts +8 -0
  67. package/dist/domain/order/convert.d.ts.map +1 -0
  68. package/dist/domain/order/convert.js +80 -0
  69. package/dist/domain/order/convert.js.map +1 -0
  70. package/dist/domain/order/index.d.ts +48 -0
  71. package/dist/domain/order/index.d.ts.map +1 -0
  72. package/dist/domain/order/index.js +41 -0
  73. package/dist/domain/order/index.js.map +1 -0
  74. package/dist/domain/order/state.d.ts +26 -0
  75. package/dist/domain/order/state.d.ts.map +1 -0
  76. package/dist/domain/order/state.js +85 -0
  77. package/dist/domain/order/state.js.map +1 -0
  78. package/dist/domain/order/wire.d.ts +123 -0
  79. package/dist/domain/order/wire.d.ts.map +1 -0
  80. package/dist/domain/order/wire.js +3 -0
  81. package/dist/domain/order/wire.js.map +1 -0
  82. package/dist/domain/orderbook/client.d.ts +20 -0
  83. package/dist/domain/orderbook/client.d.ts.map +1 -0
  84. package/dist/domain/orderbook/client.js +30 -0
  85. package/dist/domain/orderbook/client.js.map +1 -0
  86. package/dist/domain/orderbook/convert.d.ts +5 -0
  87. package/dist/domain/orderbook/convert.d.ts.map +1 -0
  88. package/dist/domain/orderbook/convert.js +34 -0
  89. package/dist/domain/orderbook/convert.js.map +1 -0
  90. package/dist/domain/orderbook/index.d.ts +36 -0
  91. package/dist/domain/orderbook/index.d.ts.map +1 -0
  92. package/dist/domain/orderbook/index.js +63 -0
  93. package/dist/domain/orderbook/index.js.map +1 -0
  94. package/dist/domain/orderbook/state.d.ts +19 -0
  95. package/dist/domain/orderbook/state.d.ts.map +1 -0
  96. package/dist/domain/orderbook/state.js +86 -0
  97. package/dist/domain/orderbook/state.js.map +1 -0
  98. package/dist/domain/orderbook/ticker.d.ts +8 -0
  99. package/dist/domain/orderbook/ticker.d.ts.map +1 -0
  100. package/dist/domain/orderbook/ticker.js +3 -0
  101. package/dist/domain/orderbook/ticker.js.map +1 -0
  102. package/dist/domain/orderbook/wire.d.ts +63 -0
  103. package/dist/domain/orderbook/wire.d.ts.map +1 -0
  104. package/dist/domain/orderbook/wire.js +3 -0
  105. package/dist/domain/orderbook/wire.js.map +1 -0
  106. package/dist/domain/position/client.d.ts +13 -0
  107. package/dist/domain/position/client.d.ts.map +1 -0
  108. package/dist/domain/position/client.js +20 -0
  109. package/dist/domain/position/client.js.map +1 -0
  110. package/dist/domain/position/index.d.ts +66 -0
  111. package/dist/domain/position/index.d.ts.map +1 -0
  112. package/dist/domain/position/index.js +19 -0
  113. package/dist/domain/position/index.js.map +1 -0
  114. package/dist/domain/position/wire.d.ts +29 -0
  115. package/dist/domain/position/wire.d.ts.map +1 -0
  116. package/dist/domain/position/wire.js +3 -0
  117. package/dist/domain/position/wire.js.map +1 -0
  118. package/dist/domain/price_history/client.d.ts +12 -0
  119. package/dist/domain/price_history/client.d.ts.map +1 -0
  120. package/dist/domain/price_history/client.js +24 -0
  121. package/dist/domain/price_history/client.js.map +1 -0
  122. package/dist/domain/price_history/index.d.ts +14 -0
  123. package/dist/domain/price_history/index.d.ts.map +1 -0
  124. package/dist/domain/price_history/index.js +27 -0
  125. package/dist/domain/price_history/index.js.map +1 -0
  126. package/dist/domain/price_history/state.d.ts +11 -0
  127. package/dist/domain/price_history/state.d.ts.map +1 -0
  128. package/dist/domain/price_history/state.js +35 -0
  129. package/dist/domain/price_history/state.js.map +1 -0
  130. package/dist/domain/price_history/wire.d.ts +45 -0
  131. package/dist/domain/price_history/wire.d.ts.map +1 -0
  132. package/dist/domain/price_history/wire.js +3 -0
  133. package/dist/domain/price_history/wire.js.map +1 -0
  134. package/dist/domain/referral/client.d.ts +13 -0
  135. package/dist/domain/referral/client.d.ts.map +1 -0
  136. package/dist/domain/referral/client.js +34 -0
  137. package/dist/domain/referral/client.js.map +1 -0
  138. package/dist/domain/referral/index.d.ts +17 -0
  139. package/dist/domain/referral/index.d.ts.map +1 -0
  140. package/dist/domain/referral/index.js +19 -0
  141. package/dist/domain/referral/index.js.map +1 -0
  142. package/dist/domain/referral/wire.d.ts +22 -0
  143. package/dist/domain/referral/wire.d.ts.map +1 -0
  144. package/dist/domain/referral/wire.js +3 -0
  145. package/dist/domain/referral/wire.js.map +1 -0
  146. package/dist/domain/trade/client.d.ts +12 -0
  147. package/dist/domain/trade/client.d.ts.map +1 -0
  148. package/dist/domain/trade/client.js +27 -0
  149. package/dist/domain/trade/client.js.map +1 -0
  150. package/dist/domain/trade/convert.d.ts +5 -0
  151. package/dist/domain/trade/convert.d.ts.map +1 -0
  152. package/dist/domain/trade/convert.js +25 -0
  153. package/dist/domain/trade/convert.js.map +1 -0
  154. package/dist/domain/trade/index.d.ts +19 -0
  155. package/dist/domain/trade/index.d.ts.map +1 -0
  156. package/dist/domain/trade/index.js +24 -0
  157. package/dist/domain/trade/index.js.map +1 -0
  158. package/dist/domain/trade/state.d.ts +16 -0
  159. package/dist/domain/trade/state.d.ts.map +1 -0
  160. package/dist/domain/trade/state.js +40 -0
  161. package/dist/domain/trade/state.js.map +1 -0
  162. package/dist/domain/trade/wire.d.ts +34 -0
  163. package/dist/domain/trade/wire.d.ts.map +1 -0
  164. package/dist/domain/trade/wire.js +3 -0
  165. package/dist/domain/trade/wire.js.map +1 -0
  166. package/dist/error.d.ts +44 -0
  167. package/dist/error.d.ts.map +1 -0
  168. package/dist/error.js +126 -0
  169. package/dist/error.js.map +1 -0
  170. package/dist/http/client.d.ts +16 -0
  171. package/dist/http/client.d.ts.map +1 -0
  172. package/dist/http/client.js +146 -0
  173. package/dist/http/client.js.map +1 -0
  174. package/dist/http/index.d.ts +3 -0
  175. package/dist/http/index.d.ts.map +1 -0
  176. package/dist/http/index.js +12 -0
  177. package/dist/http/index.js.map +1 -0
  178. package/dist/http/retry.d.ts +30 -0
  179. package/dist/http/retry.d.ts.map +1 -0
  180. package/dist/http/retry.js +48 -0
  181. package/dist/http/retry.js.map +1 -0
  182. package/dist/index.d.ts +13 -51
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +22 -68
  185. package/dist/index.js.map +1 -1
  186. package/dist/network.d.ts +4 -4
  187. package/dist/network.d.ts.map +1 -1
  188. package/dist/network.js +4 -4
  189. package/dist/network.js.map +1 -1
  190. package/dist/prelude.d.ts +41 -0
  191. package/dist/prelude.d.ts.map +1 -0
  192. package/dist/prelude.js +55 -0
  193. package/dist/prelude.js.map +1 -0
  194. package/dist/privy/client.d.ts +17 -0
  195. package/dist/privy/client.d.ts.map +1 -0
  196. package/dist/privy/client.js +66 -0
  197. package/dist/privy/client.js.map +1 -0
  198. package/dist/privy/index.d.ts +57 -0
  199. package/dist/privy/index.d.ts.map +1 -0
  200. package/dist/privy/index.js +80 -0
  201. package/dist/privy/index.js.map +1 -0
  202. package/dist/program/accounts.d.ts +16 -1
  203. package/dist/program/accounts.d.ts.map +1 -1
  204. package/dist/program/accounts.js +41 -0
  205. package/dist/program/accounts.js.map +1 -1
  206. package/dist/program/builder.d.ts +15 -11
  207. package/dist/program/builder.d.ts.map +1 -1
  208. package/dist/program/builder.js +30 -22
  209. package/dist/program/builder.js.map +1 -1
  210. package/dist/program/client.d.ts +37 -1
  211. package/dist/program/client.d.ts.map +1 -1
  212. package/dist/program/client.js +82 -2
  213. package/dist/program/client.js.map +1 -1
  214. package/dist/program/constants.d.ts +9 -1
  215. package/dist/program/constants.d.ts.map +1 -1
  216. package/dist/program/constants.js +9 -1
  217. package/dist/program/constants.js.map +1 -1
  218. package/dist/program/envelope.d.ts +94 -0
  219. package/dist/program/envelope.d.ts.map +1 -0
  220. package/dist/program/envelope.js +258 -0
  221. package/dist/program/envelope.js.map +1 -0
  222. package/dist/program/error.d.ts +8 -0
  223. package/dist/program/error.d.ts.map +1 -0
  224. package/dist/program/error.js +20 -0
  225. package/dist/program/error.js.map +1 -0
  226. package/dist/program/index.d.ts +8 -5
  227. package/dist/program/index.d.ts.map +1 -1
  228. package/dist/program/index.js +28 -3
  229. package/dist/program/index.js.map +1 -1
  230. package/dist/program/instructions.d.ts +78 -1
  231. package/dist/program/instructions.d.ts.map +1 -1
  232. package/dist/program/instructions.js +277 -3
  233. package/dist/program/instructions.js.map +1 -1
  234. package/dist/program/orders.d.ts +26 -8
  235. package/dist/program/orders.d.ts.map +1 -1
  236. package/dist/program/orders.js +58 -31
  237. package/dist/program/orders.js.map +1 -1
  238. package/dist/program/pda.d.ts +19 -0
  239. package/dist/program/pda.d.ts.map +1 -1
  240. package/dist/program/pda.js +28 -0
  241. package/dist/program/pda.js.map +1 -1
  242. package/dist/program/types.d.ts +72 -9
  243. package/dist/program/types.d.ts.map +1 -1
  244. package/dist/program/types.js.map +1 -1
  245. package/dist/shared/fmt/decimal.d.ts +5 -0
  246. package/dist/shared/fmt/decimal.d.ts.map +1 -0
  247. package/dist/shared/fmt/decimal.js +54 -0
  248. package/dist/shared/fmt/decimal.js.map +1 -0
  249. package/dist/shared/fmt/index.d.ts +3 -0
  250. package/dist/shared/fmt/index.d.ts.map +1 -0
  251. package/dist/shared/fmt/index.js +39 -0
  252. package/dist/shared/fmt/index.js.map +1 -0
  253. package/dist/shared/fmt/num.d.ts +6 -0
  254. package/dist/shared/fmt/num.d.ts.map +1 -0
  255. package/dist/shared/fmt/num.js +44 -0
  256. package/dist/shared/fmt/num.js.map +1 -0
  257. package/dist/shared/index.d.ts +4 -7
  258. package/dist/shared/index.d.ts.map +1 -1
  259. package/dist/shared/index.js +19 -7
  260. package/dist/shared/index.js.map +1 -1
  261. package/dist/shared/price.d.ts +5 -33
  262. package/dist/shared/price.d.ts.map +1 -1
  263. package/dist/shared/price.js +11 -39
  264. package/dist/shared/price.js.map +1 -1
  265. package/dist/shared/scaling.d.ts +17 -30
  266. package/dist/shared/scaling.d.ts.map +1 -1
  267. package/dist/shared/scaling.js +88 -57
  268. package/dist/shared/scaling.js.map +1 -1
  269. package/dist/shared/types.d.ts +66 -16
  270. package/dist/shared/types.d.ts.map +1 -1
  271. package/dist/shared/types.js +81 -17
  272. package/dist/shared/types.js.map +1 -1
  273. package/dist/ws/client.browser.d.ts +46 -0
  274. package/dist/ws/client.browser.d.ts.map +1 -0
  275. package/dist/ws/client.browser.js +245 -0
  276. package/dist/ws/client.browser.js.map +1 -0
  277. package/dist/ws/client.node.d.ts +36 -0
  278. package/dist/ws/client.node.d.ts.map +1 -0
  279. package/dist/ws/client.node.js +226 -0
  280. package/dist/ws/client.node.js.map +1 -0
  281. package/dist/ws/index.d.ts +110 -0
  282. package/dist/ws/index.d.ts.map +1 -0
  283. package/dist/ws/index.js +181 -0
  284. package/dist/ws/index.js.map +1 -0
  285. package/dist/ws/subscriptions.d.ts +51 -0
  286. package/dist/ws/subscriptions.d.ts.map +1 -0
  287. package/dist/ws/subscriptions.js +44 -0
  288. package/dist/ws/subscriptions.js.map +1 -0
  289. package/dist/ws/types.d.ts +23 -0
  290. package/dist/ws/types.d.ts.map +1 -0
  291. package/dist/ws/types.js +3 -0
  292. package/dist/ws/types.js.map +1 -0
  293. package/package.json +10 -13
  294. package/dist/api/client.d.ts +0 -225
  295. package/dist/api/client.d.ts.map +0 -1
  296. package/dist/api/client.js +0 -452
  297. package/dist/api/client.js.map +0 -1
  298. package/dist/api/error.d.ts +0 -58
  299. package/dist/api/error.d.ts.map +0 -1
  300. package/dist/api/error.js +0 -98
  301. package/dist/api/error.js.map +0 -1
  302. package/dist/api/index.d.ts +0 -23
  303. package/dist/api/index.d.ts.map +0 -1
  304. package/dist/api/index.js +0 -51
  305. package/dist/api/index.js.map +0 -1
  306. package/dist/api/types/admin.d.ts +0 -49
  307. package/dist/api/types/admin.d.ts.map +0 -1
  308. package/dist/api/types/admin.js +0 -13
  309. package/dist/api/types/admin.js.map +0 -1
  310. package/dist/api/types/index.d.ts +0 -14
  311. package/dist/api/types/index.d.ts.map +0 -1
  312. package/dist/api/types/index.js +0 -13
  313. package/dist/api/types/index.js.map +0 -1
  314. package/dist/api/types/market.d.ts +0 -186
  315. package/dist/api/types/market.d.ts.map +0 -1
  316. package/dist/api/types/market.js +0 -6
  317. package/dist/api/types/market.js.map +0 -1
  318. package/dist/api/types/order.d.ts +0 -190
  319. package/dist/api/types/order.d.ts.map +0 -1
  320. package/dist/api/types/order.js +0 -6
  321. package/dist/api/types/order.js.map +0 -1
  322. package/dist/api/types/orderbook.d.ts +0 -36
  323. package/dist/api/types/orderbook.d.ts.map +0 -1
  324. package/dist/api/types/orderbook.js +0 -6
  325. package/dist/api/types/orderbook.js.map +0 -1
  326. package/dist/api/types/position.d.ts +0 -60
  327. package/dist/api/types/position.d.ts.map +0 -1
  328. package/dist/api/types/position.js +0 -6
  329. package/dist/api/types/position.js.map +0 -1
  330. package/dist/api/types/price_history.d.ts +0 -68
  331. package/dist/api/types/price_history.d.ts.map +0 -1
  332. package/dist/api/types/price_history.js +0 -13
  333. package/dist/api/types/price_history.js.map +0 -1
  334. package/dist/api/types/trade.d.ts +0 -67
  335. package/dist/api/types/trade.d.ts.map +0 -1
  336. package/dist/api/types/trade.js +0 -13
  337. package/dist/api/types/trade.js.map +0 -1
  338. package/dist/api/validation.d.ts +0 -24
  339. package/dist/api/validation.d.ts.map +0 -1
  340. package/dist/api/validation.js +0 -53
  341. package/dist/api/validation.js.map +0 -1
  342. package/dist/websocket/client.d.ts +0 -238
  343. package/dist/websocket/client.d.ts.map +0 -1
  344. package/dist/websocket/client.js +0 -580
  345. package/dist/websocket/client.js.map +0 -1
  346. package/dist/websocket/error.d.ts +0 -47
  347. package/dist/websocket/error.d.ts.map +0 -1
  348. package/dist/websocket/error.js +0 -83
  349. package/dist/websocket/error.js.map +0 -1
  350. package/dist/websocket/handlers.d.ts +0 -97
  351. package/dist/websocket/handlers.d.ts.map +0 -1
  352. package/dist/websocket/handlers.js +0 -277
  353. package/dist/websocket/handlers.js.map +0 -1
  354. package/dist/websocket/index.d.ts +0 -38
  355. package/dist/websocket/index.d.ts.map +0 -1
  356. package/dist/websocket/index.js +0 -75
  357. package/dist/websocket/index.js.map +0 -1
  358. package/dist/websocket/state/index.d.ts +0 -7
  359. package/dist/websocket/state/index.d.ts.map +0 -1
  360. package/dist/websocket/state/index.js +0 -14
  361. package/dist/websocket/state/index.js.map +0 -1
  362. package/dist/websocket/state/orderbook.d.ts +0 -107
  363. package/dist/websocket/state/orderbook.d.ts.map +0 -1
  364. package/dist/websocket/state/orderbook.js +0 -293
  365. package/dist/websocket/state/orderbook.js.map +0 -1
  366. package/dist/websocket/state/price.d.ts +0 -108
  367. package/dist/websocket/state/price.d.ts.map +0 -1
  368. package/dist/websocket/state/price.js +0 -243
  369. package/dist/websocket/state/price.js.map +0 -1
  370. package/dist/websocket/state/user.d.ts +0 -83
  371. package/dist/websocket/state/user.d.ts.map +0 -1
  372. package/dist/websocket/state/user.js +0 -228
  373. package/dist/websocket/state/user.js.map +0 -1
  374. package/dist/websocket/subscriptions.d.ts +0 -143
  375. package/dist/websocket/subscriptions.d.ts.map +0 -1
  376. package/dist/websocket/subscriptions.js +0 -244
  377. package/dist/websocket/subscriptions.js.map +0 -1
  378. package/dist/websocket/types.d.ts +0 -417
  379. package/dist/websocket/types.d.ts.map +0 -1
  380. package/dist/websocket/types.js +0 -195
  381. package/dist/websocket/types.js.map +0 -1
@@ -4,81 +4,112 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ScalingError = void 0;
7
+ exports.alignPriceToTick = alignPriceToTick;
7
8
  exports.scalePriceSize = scalePriceSize;
9
+ exports.scalePriceSizeLegacy = scalePriceSizeLegacy;
8
10
  const decimal_js_1 = __importDefault(require("decimal.js"));
9
11
  const types_1 = require("../program/types");
10
- /**
11
- * Error thrown during price/size scaling
12
- */
12
+ const U64_MAX = (1n << 64n) - 1n;
13
13
  class ScalingError extends Error {
14
14
  constructor(message) {
15
15
  super(message);
16
16
  this.name = "ScalingError";
17
17
  }
18
- static zeroPriceOrSize() {
19
- return new ScalingError("Price and size must be non-zero");
18
+ static nonPositivePrice(value) {
19
+ return new ScalingError(`Price must be positive, got ${value}`);
20
+ }
21
+ static nonPositiveSize(value) {
22
+ return new ScalingError(`Size must be positive, got ${value}`);
23
+ }
24
+ static overflow(context) {
25
+ return new ScalingError(`Overflow: ${context}`);
20
26
  }
21
- static negativeValue(field) {
22
- return new ScalingError(`${field} must be positive`);
27
+ static zeroAmount() {
28
+ return new ScalingError("Computed amount is zero");
23
29
  }
24
- static overflow(field) {
25
- return new ScalingError(`${field} exceeds u64 range`);
30
+ static fractionalAmount(value) {
31
+ return new ScalingError(`Fractional lamports not allowed: ${value}`);
32
+ }
33
+ static invalidDecimal(input, reason) {
34
+ return new ScalingError(`Invalid decimal '${input}': ${reason}`);
26
35
  }
27
36
  }
28
37
  exports.ScalingError = ScalingError;
29
- const U64_MAX = (1n << 64n) - 1n;
30
- /**
31
- * Scale price and size to maker_amount and taker_amount using exact decimal arithmetic.
32
- *
33
- * For BID orders (buying base with quote):
34
- * - maker_amount = price * size * 10^quoteDecimals (what maker gives in quote tokens)
35
- * - taker_amount = size * 10^baseDecimals (what maker receives in base tokens)
36
- *
37
- * For ASK orders (selling base for quote):
38
- * - maker_amount = size * 10^baseDecimals (what maker gives in base tokens)
39
- * - taker_amount = price * size * 10^quoteDecimals (what maker receives in quote tokens)
40
- *
41
- * @param priceStr - Price as a decimal string (e.g., "0.75")
42
- * @param sizeStr - Size as a decimal string (e.g., "100")
43
- * @param side - Order side (BID or ASK)
44
- * @param decimals - Orderbook decimal configuration
45
- * @returns Scaled maker_amount and taker_amount as bigints
46
- */
47
- function scalePriceSize(priceStr, sizeStr, side, decimals) {
48
- const price = new decimal_js_1.default(priceStr);
49
- const size = new decimal_js_1.default(sizeStr);
50
- if (price.isZero() || size.isZero()) {
51
- throw ScalingError.zeroPriceOrSize();
52
- }
53
- if (price.isNegative()) {
54
- throw ScalingError.negativeValue("price");
55
- }
56
- if (size.isNegative()) {
57
- throw ScalingError.negativeValue("size");
58
- }
59
- const baseScale = new decimal_js_1.default(10).pow(decimals.baseDecimals);
60
- const quoteScale = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
61
- const baseAmount = size.mul(baseScale).floor();
62
- const quoteAmount = price.mul(size).mul(quoteScale).floor();
63
- const baseAmountBigInt = BigInt(baseAmount.toFixed(0));
64
- const quoteAmountBigInt = BigInt(quoteAmount.toFixed(0));
65
- if (baseAmountBigInt > U64_MAX) {
66
- throw ScalingError.overflow("base amount");
67
- }
68
- if (quoteAmountBigInt > U64_MAX) {
69
- throw ScalingError.overflow("quote amount");
38
+ function alignPriceToTick(price, decimals) {
39
+ const tickSize = decimals.tickSize ?? 0n;
40
+ if (tickSize <= 1n) {
41
+ return price;
42
+ }
43
+ const quoteMultiplier = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
44
+ const tick = new decimal_js_1.default(tickSize.toString());
45
+ const lamports = price.mul(quoteMultiplier).trunc();
46
+ const aligned = lamports.div(tick).trunc().mul(tick);
47
+ return aligned.div(quoteMultiplier);
48
+ }
49
+ function scalePriceSize(priceInput, sizeInput, side, decimals) {
50
+ const price = normalizeDecimal(priceInput, "price");
51
+ const size = normalizeDecimal(sizeInput, "size");
52
+ if (price.lte(0)) {
53
+ throw ScalingError.nonPositivePrice(price.toString());
54
+ }
55
+ if (size.lte(0)) {
56
+ throw ScalingError.nonPositiveSize(size.toString());
57
+ }
58
+ const baseMultiplier = new decimal_js_1.default(10).pow(decimals.baseDecimals);
59
+ const quoteMultiplier = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
60
+ const baseLamports = size.mul(baseMultiplier);
61
+ const quoteLamports = price.mul(size).mul(quoteMultiplier);
62
+ assertWhole(baseLamports, "base_lamports");
63
+ assertWhole(quoteLamports, "quote_lamports");
64
+ const base = toU64(baseLamports, "base_lamports");
65
+ const quote = toU64(quoteLamports, "quote_lamports");
66
+ if (base === 0n || quote === 0n) {
67
+ throw ScalingError.zeroAmount();
70
68
  }
71
69
  if (side === types_1.OrderSide.BID) {
72
70
  return {
73
- makerAmount: quoteAmountBigInt,
74
- takerAmount: baseAmountBigInt,
71
+ amountIn: quote,
72
+ amountOut: base,
73
+ makerAmount: quote,
74
+ takerAmount: base,
75
75
  };
76
76
  }
77
- else {
78
- return {
79
- makerAmount: baseAmountBigInt,
80
- takerAmount: quoteAmountBigInt,
81
- };
77
+ return {
78
+ amountIn: base,
79
+ amountOut: quote,
80
+ makerAmount: base,
81
+ takerAmount: quote,
82
+ };
83
+ }
84
+ function normalizeDecimal(value, field) {
85
+ if (value instanceof decimal_js_1.default) {
86
+ return value;
87
+ }
88
+ try {
89
+ return new decimal_js_1.default(value);
82
90
  }
91
+ catch (error) {
92
+ const reason = error instanceof Error ? error.message : String(error);
93
+ throw ScalingError.invalidDecimal(value, reason || field);
94
+ }
95
+ }
96
+ function assertWhole(value, label) {
97
+ if (!value.isInteger()) {
98
+ throw ScalingError.fractionalAmount(`${label} = ${value.toString()}`);
99
+ }
100
+ }
101
+ function toU64(value, label) {
102
+ const bigint = BigInt(value.toFixed(0));
103
+ if (bigint < 0n || bigint > U64_MAX) {
104
+ throw ScalingError.overflow(`${label} ${value.toString()} does not fit in u64`);
105
+ }
106
+ return bigint;
107
+ }
108
+ function scalePriceSizeLegacy(price, size, side, decimals) {
109
+ const scaled = scalePriceSize(price, size, side, decimals);
110
+ return {
111
+ makerAmount: scaled.amountIn,
112
+ takerAmount: scaled.amountOut,
113
+ };
83
114
  }
84
115
  //# sourceMappingURL=scaling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaling.js","sourceRoot":"","sources":["../../src/shared/scaling.ts"],"names":[],"mappings":";;;;;;AA8DA,wCA8CC;AA5GD,4DAAiC;AACjC,4CAA6C;AAoB7C;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAa;QAChC,OAAO,IAAI,YAAY,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,OAAO,IAAI,YAAY,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IACxD,CAAC;CACF;AAjBD,oCAiBC;AAED,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,cAAc,CAC5B,QAAgB,EAChB,OAAe,EACf,IAAe,EACf,QAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,oBAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACtB,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,gBAAgB,GAAG,OAAO,EAAE,CAAC;QAC/B,MAAM,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,iBAAiB,GAAG,OAAO,EAAE,CAAC;QAChC,MAAM,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,KAAK,iBAAS,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO;YACL,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,gBAAgB;SAC9B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,iBAAiB;SAC/B,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import Decimal from \"decimal.js\";\nimport { OrderSide } from \"../program/types\";\n\n/**\n * Orderbook decimal configuration\n */\nexport interface OrderbookDecimals {\n orderbookId: string;\n baseDecimals: number;\n quoteDecimals: number;\n priceDecimals: number;\n}\n\n/**\n * Scaled amounts result\n */\nexport interface ScaledAmounts {\n makerAmount: bigint;\n takerAmount: bigint;\n}\n\n/**\n * Error thrown during price/size scaling\n */\nexport class ScalingError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ScalingError\";\n }\n\n static zeroPriceOrSize(): ScalingError {\n return new ScalingError(\"Price and size must be non-zero\");\n }\n\n static negativeValue(field: string): ScalingError {\n return new ScalingError(`${field} must be positive`);\n }\n\n static overflow(field: string): ScalingError {\n return new ScalingError(`${field} exceeds u64 range`);\n }\n}\n\nconst U64_MAX = (1n << 64n) - 1n;\n\n/**\n * Scale price and size to maker_amount and taker_amount using exact decimal arithmetic.\n *\n * For BID orders (buying base with quote):\n * - maker_amount = price * size * 10^quoteDecimals (what maker gives in quote tokens)\n * - taker_amount = size * 10^baseDecimals (what maker receives in base tokens)\n *\n * For ASK orders (selling base for quote):\n * - maker_amount = size * 10^baseDecimals (what maker gives in base tokens)\n * - taker_amount = price * size * 10^quoteDecimals (what maker receives in quote tokens)\n *\n * @param priceStr - Price as a decimal string (e.g., \"0.75\")\n * @param sizeStr - Size as a decimal string (e.g., \"100\")\n * @param side - Order side (BID or ASK)\n * @param decimals - Orderbook decimal configuration\n * @returns Scaled maker_amount and taker_amount as bigints\n */\nexport function scalePriceSize(\n priceStr: string,\n sizeStr: string,\n side: OrderSide,\n decimals: OrderbookDecimals\n): ScaledAmounts {\n const price = new Decimal(priceStr);\n const size = new Decimal(sizeStr);\n\n if (price.isZero() || size.isZero()) {\n throw ScalingError.zeroPriceOrSize();\n }\n if (price.isNegative()) {\n throw ScalingError.negativeValue(\"price\");\n }\n if (size.isNegative()) {\n throw ScalingError.negativeValue(\"size\");\n }\n\n const baseScale = new Decimal(10).pow(decimals.baseDecimals);\n const quoteScale = new Decimal(10).pow(decimals.quoteDecimals);\n\n const baseAmount = size.mul(baseScale).floor();\n const quoteAmount = price.mul(size).mul(quoteScale).floor();\n\n const baseAmountBigInt = BigInt(baseAmount.toFixed(0));\n const quoteAmountBigInt = BigInt(quoteAmount.toFixed(0));\n\n if (baseAmountBigInt > U64_MAX) {\n throw ScalingError.overflow(\"base amount\");\n }\n if (quoteAmountBigInt > U64_MAX) {\n throw ScalingError.overflow(\"quote amount\");\n }\n\n if (side === OrderSide.BID) {\n return {\n makerAmount: quoteAmountBigInt,\n takerAmount: baseAmountBigInt,\n };\n } else {\n return {\n makerAmount: baseAmountBigInt,\n takerAmount: quoteAmountBigInt,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"scaling.js","sourceRoot":"","sources":["../../src/shared/scaling.ts"],"names":[],"mappings":"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","sourcesContent":["import Decimal from \"decimal.js\";\nimport { OrderSide } from \"../program/types\";\n\nexport interface OrderbookDecimals {\n orderbookId: string;\n baseDecimals: number;\n quoteDecimals: number;\n priceDecimals: number;\n tickSize?: bigint;\n}\n\nexport interface ScaledAmounts {\n amountIn: bigint;\n amountOut: bigint;\n // Backward-compatible aliases used by v1 builder code.\n makerAmount: bigint;\n takerAmount: bigint;\n}\n\nconst U64_MAX = (1n << 64n) - 1n;\n\nexport class ScalingError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ScalingError\";\n }\n\n static nonPositivePrice(value: string): ScalingError {\n return new ScalingError(`Price must be positive, got ${value}`);\n }\n\n static nonPositiveSize(value: string): ScalingError {\n return new ScalingError(`Size must be positive, got ${value}`);\n }\n\n static overflow(context: string): ScalingError {\n return new ScalingError(`Overflow: ${context}`);\n }\n\n static zeroAmount(): ScalingError {\n return new ScalingError(\"Computed amount is zero\");\n }\n\n static fractionalAmount(value: string): ScalingError {\n return new ScalingError(`Fractional lamports not allowed: ${value}`);\n }\n\n static invalidDecimal(input: string, reason: string): ScalingError {\n return new ScalingError(`Invalid decimal '${input}': ${reason}`);\n }\n}\n\nexport function alignPriceToTick(price: Decimal, decimals: OrderbookDecimals): Decimal {\n const tickSize = decimals.tickSize ?? 0n;\n if (tickSize <= 1n) {\n return price;\n }\n\n const quoteMultiplier = new Decimal(10).pow(decimals.quoteDecimals);\n const tick = new Decimal(tickSize.toString());\n const lamports = price.mul(quoteMultiplier).trunc();\n const aligned = lamports.div(tick).trunc().mul(tick);\n return aligned.div(quoteMultiplier);\n}\n\nexport function scalePriceSize(\n priceInput: string | Decimal,\n sizeInput: string | Decimal,\n side: OrderSide,\n decimals: OrderbookDecimals\n): ScaledAmounts {\n const price = normalizeDecimal(priceInput, \"price\");\n const size = normalizeDecimal(sizeInput, \"size\");\n\n if (price.lte(0)) {\n throw ScalingError.nonPositivePrice(price.toString());\n }\n if (size.lte(0)) {\n throw ScalingError.nonPositiveSize(size.toString());\n }\n\n const baseMultiplier = new Decimal(10).pow(decimals.baseDecimals);\n const quoteMultiplier = new Decimal(10).pow(decimals.quoteDecimals);\n\n const baseLamports = size.mul(baseMultiplier);\n const quoteLamports = price.mul(size).mul(quoteMultiplier);\n\n assertWhole(baseLamports, \"base_lamports\");\n assertWhole(quoteLamports, \"quote_lamports\");\n\n const base = toU64(baseLamports, \"base_lamports\");\n const quote = toU64(quoteLamports, \"quote_lamports\");\n\n if (base === 0n || quote === 0n) {\n throw ScalingError.zeroAmount();\n }\n\n if (side === OrderSide.BID) {\n return {\n amountIn: quote,\n amountOut: base,\n makerAmount: quote,\n takerAmount: base,\n };\n }\n\n return {\n amountIn: base,\n amountOut: quote,\n makerAmount: base,\n takerAmount: quote,\n };\n}\n\nfunction normalizeDecimal(value: string | Decimal, field: string): Decimal {\n if (value instanceof Decimal) {\n return value;\n }\n\n try {\n return new Decimal(value);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw ScalingError.invalidDecimal(value, reason || field);\n }\n}\n\nfunction assertWhole(value: Decimal, label: string): void {\n if (!value.isInteger()) {\n throw ScalingError.fractionalAmount(`${label} = ${value.toString()}`);\n }\n}\n\nfunction toU64(value: Decimal, label: string): bigint {\n const bigint = BigInt(value.toFixed(0));\n if (bigint < 0n || bigint > U64_MAX) {\n throw ScalingError.overflow(`${label} ${value.toString()} does not fit in u64`);\n }\n return bigint;\n}\n\n// Legacy aliases kept for existing integrations.\nexport interface LegacyScaledAmounts {\n makerAmount: bigint;\n takerAmount: bigint;\n}\n\nexport function scalePriceSizeLegacy(\n price: string,\n size: string,\n side: OrderSide,\n decimals: OrderbookDecimals\n): LegacyScaledAmounts {\n const scaled = scalePriceSize(price, size, side, decimals);\n return {\n makerAmount: scaled.amountIn,\n takerAmount: scaled.amountOut,\n };\n}\n"]}
@@ -1,19 +1,69 @@
1
- /**
2
- * Price history candle resolution.
3
- * Used by both REST API and WebSocket for price history queries.
4
- */
1
+ export type Branded<T, Brand extends string> = T & {
2
+ readonly __brand: Brand;
3
+ };
4
+ export type OrderBookId = Branded<string, "OrderBookId">;
5
+ export type PubkeyStr = Branded<string, "PubkeyStr">;
6
+ export declare function asOrderBookId(value: string): OrderBookId;
7
+ export declare function asPubkeyStr(value: string): PubkeyStr;
8
+ export declare enum Side {
9
+ Bid = "bid",
10
+ Ask = "ask"
11
+ }
12
+ export declare function sideLabel(side: Side): "Buy" | "Sell";
13
+ export declare enum TimeInForce {
14
+ Gtc = "GTC",
15
+ Ioc = "IOC",
16
+ Fok = "FOK",
17
+ Alo = "ALO"
18
+ }
19
+ export declare enum TriggerType {
20
+ TakeProfit = "TP",
21
+ StopLoss = "SL"
22
+ }
23
+ export declare enum TriggerStatus {
24
+ Triggered = "triggered",
25
+ Failed = "failed",
26
+ Expired = "expired"
27
+ }
28
+ export declare enum OrderUpdateType {
29
+ Placement = "PLACEMENT",
30
+ Update = "UPDATE",
31
+ Cancellation = "CANCELLATION"
32
+ }
33
+ export declare enum TriggerUpdateType {
34
+ Triggered = "TRIGGERED",
35
+ Failed = "FAILED",
36
+ Expired = "EXPIRED"
37
+ }
38
+ export declare enum TriggerResultStatus {
39
+ Filled = "filled",
40
+ Accepted = "accepted",
41
+ Rejected = "rejected"
42
+ }
5
43
  export declare enum Resolution {
6
- /** 1 minute candles */
7
- OneMinute = "1m",
8
- /** 5 minute candles */
9
- FiveMinutes = "5m",
10
- /** 15 minute candles */
11
- FifteenMinutes = "15m",
12
- /** 1 hour candles */
13
- OneHour = "1h",
14
- /** 4 hour candles */
15
- FourHours = "4h",
16
- /** 1 day candles */
17
- OneDay = "1d"
44
+ Minute1 = "1m",
45
+ Minute5 = "5m",
46
+ Minute15 = "15m",
47
+ Hour1 = "1h",
48
+ Hour4 = "4h",
49
+ Day1 = "1d"
50
+ }
51
+ export declare function resolutionSeconds(resolution: Resolution): number;
52
+ export declare function deriveOrderbookId(baseToken: string, quoteToken: string): OrderBookId;
53
+ export interface SubmitOrderRequest {
54
+ maker: string;
55
+ nonce: number;
56
+ market_pubkey: string;
57
+ base_token: string;
58
+ quote_token: string;
59
+ side: number;
60
+ amount_in: string;
61
+ amount_out: string;
62
+ expiration?: number;
63
+ signature: string;
64
+ orderbook_id: string;
65
+ tif?: TimeInForce;
66
+ trigger_price?: number;
67
+ trigger_type?: TriggerType;
18
68
  }
19
69
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,UAAU;IACpB,uBAAuB;IACvB,SAAS,OAAO;IAChB,uBAAuB;IACvB,WAAW,OAAO;IAClB,wBAAwB;IACxB,cAAc,QAAQ;IACtB,qBAAqB;IACrB,OAAO,OAAO;IACd,qBAAqB;IACrB,SAAS,OAAO;IAChB,oBAAoB;IACpB,MAAM,OAAO;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAExD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,oBAAY,IAAI;IACd,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAEpD;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,WAAW;IACrB,UAAU,OAAO;IACjB,QAAQ,OAAO;CAChB;AAED,oBAAY,aAAa;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AAED,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,oBAAY,UAAU;IACpB,OAAO,OAAO;IACd,OAAO,OAAO;IACd,QAAQ,QAAQ;IAChB,KAAK,OAAO;IACZ,KAAK,OAAO;IACZ,IAAI,OAAO;CACZ;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAehE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAEpF;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B"}
@@ -1,23 +1,87 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Resolution = void 0;
4
- /**
5
- * Price history candle resolution.
6
- * Used by both REST API and WebSocket for price history queries.
7
- */
3
+ exports.Resolution = exports.TriggerResultStatus = exports.TriggerUpdateType = exports.OrderUpdateType = exports.TriggerStatus = exports.TriggerType = exports.TimeInForce = exports.Side = void 0;
4
+ exports.asOrderBookId = asOrderBookId;
5
+ exports.asPubkeyStr = asPubkeyStr;
6
+ exports.sideLabel = sideLabel;
7
+ exports.resolutionSeconds = resolutionSeconds;
8
+ exports.deriveOrderbookId = deriveOrderbookId;
9
+ function asOrderBookId(value) {
10
+ return value;
11
+ }
12
+ function asPubkeyStr(value) {
13
+ return value;
14
+ }
15
+ var Side;
16
+ (function (Side) {
17
+ Side["Bid"] = "bid";
18
+ Side["Ask"] = "ask";
19
+ })(Side || (exports.Side = Side = {}));
20
+ function sideLabel(side) {
21
+ return side === Side.Bid ? "Buy" : "Sell";
22
+ }
23
+ var TimeInForce;
24
+ (function (TimeInForce) {
25
+ TimeInForce["Gtc"] = "GTC";
26
+ TimeInForce["Ioc"] = "IOC";
27
+ TimeInForce["Fok"] = "FOK";
28
+ TimeInForce["Alo"] = "ALO";
29
+ })(TimeInForce || (exports.TimeInForce = TimeInForce = {}));
30
+ var TriggerType;
31
+ (function (TriggerType) {
32
+ TriggerType["TakeProfit"] = "TP";
33
+ TriggerType["StopLoss"] = "SL";
34
+ })(TriggerType || (exports.TriggerType = TriggerType = {}));
35
+ var TriggerStatus;
36
+ (function (TriggerStatus) {
37
+ TriggerStatus["Triggered"] = "triggered";
38
+ TriggerStatus["Failed"] = "failed";
39
+ TriggerStatus["Expired"] = "expired";
40
+ })(TriggerStatus || (exports.TriggerStatus = TriggerStatus = {}));
41
+ var OrderUpdateType;
42
+ (function (OrderUpdateType) {
43
+ OrderUpdateType["Placement"] = "PLACEMENT";
44
+ OrderUpdateType["Update"] = "UPDATE";
45
+ OrderUpdateType["Cancellation"] = "CANCELLATION";
46
+ })(OrderUpdateType || (exports.OrderUpdateType = OrderUpdateType = {}));
47
+ var TriggerUpdateType;
48
+ (function (TriggerUpdateType) {
49
+ TriggerUpdateType["Triggered"] = "TRIGGERED";
50
+ TriggerUpdateType["Failed"] = "FAILED";
51
+ TriggerUpdateType["Expired"] = "EXPIRED";
52
+ })(TriggerUpdateType || (exports.TriggerUpdateType = TriggerUpdateType = {}));
53
+ var TriggerResultStatus;
54
+ (function (TriggerResultStatus) {
55
+ TriggerResultStatus["Filled"] = "filled";
56
+ TriggerResultStatus["Accepted"] = "accepted";
57
+ TriggerResultStatus["Rejected"] = "rejected";
58
+ })(TriggerResultStatus || (exports.TriggerResultStatus = TriggerResultStatus = {}));
8
59
  var Resolution;
9
60
  (function (Resolution) {
10
- /** 1 minute candles */
11
- Resolution["OneMinute"] = "1m";
12
- /** 5 minute candles */
13
- Resolution["FiveMinutes"] = "5m";
14
- /** 15 minute candles */
15
- Resolution["FifteenMinutes"] = "15m";
16
- /** 1 hour candles */
17
- Resolution["OneHour"] = "1h";
18
- /** 4 hour candles */
19
- Resolution["FourHours"] = "4h";
20
- /** 1 day candles */
21
- Resolution["OneDay"] = "1d";
61
+ Resolution["Minute1"] = "1m";
62
+ Resolution["Minute5"] = "5m";
63
+ Resolution["Minute15"] = "15m";
64
+ Resolution["Hour1"] = "1h";
65
+ Resolution["Hour4"] = "4h";
66
+ Resolution["Day1"] = "1d";
22
67
  })(Resolution || (exports.Resolution = Resolution = {}));
68
+ function resolutionSeconds(resolution) {
69
+ switch (resolution) {
70
+ case Resolution.Minute1:
71
+ return 60;
72
+ case Resolution.Minute5:
73
+ return 300;
74
+ case Resolution.Minute15:
75
+ return 900;
76
+ case Resolution.Hour1:
77
+ return 3600;
78
+ case Resolution.Hour4:
79
+ return 21600;
80
+ case Resolution.Day1:
81
+ return 86400;
82
+ }
83
+ }
84
+ function deriveOrderbookId(baseToken, quoteToken) {
85
+ return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;
86
+ }
23
87
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,UAaX;AAbD,WAAY,UAAU;IACpB,uBAAuB;IACvB,8BAAgB,CAAA;IAChB,uBAAuB;IACvB,gCAAkB,CAAA;IAClB,wBAAwB;IACxB,oCAAsB,CAAA;IACtB,qBAAqB;IACrB,4BAAc,CAAA;IACd,qBAAqB;IACrB,8BAAgB,CAAA;IAChB,oBAAoB;IACpB,2BAAa,CAAA;AACf,CAAC,EAbW,UAAU,0BAAV,UAAU,QAarB","sourcesContent":["/**\n * Price history candle resolution.\n * Used by both REST API and WebSocket for price history queries.\n */\nexport enum Resolution {\n /** 1 minute candles */\n OneMinute = \"1m\",\n /** 5 minute candles */\n FiveMinutes = \"5m\",\n /** 15 minute candles */\n FifteenMinutes = \"15m\",\n /** 1 hour candles */\n OneHour = \"1h\",\n /** 4 hour candles */\n FourHours = \"4h\",\n /** 1 day candles */\n OneDay = \"1d\",\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":";;;AAKA,sCAEC;AAED,kCAEC;AAOD,8BAEC;AA+CD,8CAeC;AAED,8CAEC;AAjFD,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,KAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAkB,CAAC;AAC5B,CAAC;AAED,IAAY,IAGX;AAHD,WAAY,IAAI;IACd,mBAAW,CAAA;IACX,mBAAW,CAAA;AACb,CAAC,EAHW,IAAI,oBAAJ,IAAI,QAGf;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;AACb,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;IACjB,gDAA6B,CAAA;AAC/B,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;AACvB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,4BAAc,CAAA;IACd,4BAAc,CAAA;IACd,8BAAgB,CAAA;IAChB,0BAAY,CAAA;IACZ,0BAAY,CAAA;IACZ,yBAAW,CAAA;AACb,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB;AAED,SAAgB,iBAAiB,CAAC,UAAsB;IACtD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,OAAO;YACrB,OAAO,EAAE,CAAC;QACZ,KAAK,UAAU,CAAC,OAAO;YACrB,OAAO,GAAG,CAAC;QACb,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,GAAG,CAAC;QACb,KAAK,UAAU,CAAC,KAAK;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,UAAU,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,UAAU,CAAC,IAAI;YAClB,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;IACrE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAiB,CAAC;AAC7E,CAAC","sourcesContent":["export type Branded<T, Brand extends string> = T & { readonly __brand: Brand };\n\nexport type OrderBookId = Branded<string, \"OrderBookId\">;\nexport type PubkeyStr = Branded<string, \"PubkeyStr\">;\n\nexport function asOrderBookId(value: string): OrderBookId {\n return value as OrderBookId;\n}\n\nexport function asPubkeyStr(value: string): PubkeyStr {\n return value as PubkeyStr;\n}\n\nexport enum Side {\n Bid = \"bid\",\n Ask = \"ask\",\n}\n\nexport function sideLabel(side: Side): \"Buy\" | \"Sell\" {\n return side === Side.Bid ? \"Buy\" : \"Sell\";\n}\n\nexport enum TimeInForce {\n Gtc = \"GTC\",\n Ioc = \"IOC\",\n Fok = \"FOK\",\n Alo = \"ALO\",\n}\n\nexport enum TriggerType {\n TakeProfit = \"TP\",\n StopLoss = \"SL\",\n}\n\nexport enum TriggerStatus {\n Triggered = \"triggered\",\n Failed = \"failed\",\n Expired = \"expired\",\n}\n\nexport enum OrderUpdateType {\n Placement = \"PLACEMENT\",\n Update = \"UPDATE\",\n Cancellation = \"CANCELLATION\",\n}\n\nexport enum TriggerUpdateType {\n Triggered = \"TRIGGERED\",\n Failed = \"FAILED\",\n Expired = \"EXPIRED\",\n}\n\nexport enum TriggerResultStatus {\n Filled = \"filled\",\n Accepted = \"accepted\",\n Rejected = \"rejected\",\n}\n\nexport enum Resolution {\n Minute1 = \"1m\",\n Minute5 = \"5m\",\n Minute15 = \"15m\",\n Hour1 = \"1h\",\n Hour4 = \"4h\",\n Day1 = \"1d\",\n}\n\nexport function resolutionSeconds(resolution: Resolution): number {\n switch (resolution) {\n case Resolution.Minute1:\n return 60;\n case Resolution.Minute5:\n return 300;\n case Resolution.Minute15:\n return 900;\n case Resolution.Hour1:\n return 3600;\n case Resolution.Hour4:\n return 21600;\n case Resolution.Day1:\n return 86400;\n }\n}\n\nexport function deriveOrderbookId(baseToken: string, quoteToken: string): OrderBookId {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}` as OrderBookId;\n}\n\nexport interface SubmitOrderRequest {\n maker: string;\n nonce: number;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n amount_in: string;\n amount_out: string;\n expiration?: number;\n signature: string;\n orderbook_id: string;\n tif?: TimeInForce;\n trigger_price?: number;\n trigger_type?: TriggerType;\n}\n"]}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Browser WebSocket client using native `globalThis.WebSocket`.
3
+ *
4
+ * Selected at build time via the `"browser"` field in package.json.
5
+ */
6
+ import { ReadyState, type MessageOut, type WsConfig, type WsEvent } from "./index";
7
+ import { type SubscribeParams, type UnsubscribeParams } from "./subscriptions";
8
+ import type { IWsClient } from "./types";
9
+ export declare class WsClient implements IWsClient {
10
+ private readonly config;
11
+ private socket?;
12
+ private reconnectAttempts;
13
+ private userInitiatedClose;
14
+ private pingTimer?;
15
+ private pongTimer?;
16
+ private callbacks;
17
+ private readonly activeSubscriptions;
18
+ private readonly pendingMessages;
19
+ /**
20
+ * @param config - WebSocket configuration (url, reconnect settings, etc.)
21
+ * @param _authTokenRef - Ignored in browser builds. The browser automatically
22
+ * sends HTTP-only cookies with same-origin WebSocket
23
+ * connections, so manual token injection is unnecessary.
24
+ */
25
+ constructor(config?: Partial<WsConfig>, _authTokenRef?: () => Promise<string | undefined>);
26
+ connect(): Promise<void>;
27
+ disconnect(): Promise<void>;
28
+ send(message: MessageOut): void;
29
+ subscribe(params: SubscribeParams): void;
30
+ unsubscribe(params: UnsubscribeParams): void;
31
+ isConnected(): boolean;
32
+ readyState(): ReadyState;
33
+ on(callback: (event: WsEvent) => void): () => void;
34
+ private emit;
35
+ private connectInternal;
36
+ private handleIncoming;
37
+ private handleClose;
38
+ private backoffDelayMs;
39
+ private startHeartbeat;
40
+ private stopHeartbeat;
41
+ private resetPongTimeout;
42
+ private trackMessage;
43
+ private flushPendingMessages;
44
+ private resubscribeAll;
45
+ }
46
+ //# sourceMappingURL=client.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.browser.d.ts","sourceRoot":"","sources":["../../src/ws/client.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGL,UAAU,EAEV,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,OAAO,EAEb,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAiC;IACnD,OAAO,CAAC,SAAS,CAAC,CAAgC;IAClD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IAEpD;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAInF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAW/B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIxC,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI5C,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,UAAU;IAiBxB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IASlD,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,cAAc;CAMvB"}