@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
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.derive_condition_id = exports.cancel_all_message = exports.cancel_trigger_order_message = exports.cancel_order_message = exports.calculate_taker_fill = exports.orders_can_cross = exports.is_order_expired = void 0;
3
4
  exports.hashOrder = hashOrder;
4
5
  exports.hashOrderHex = hashOrderHex;
5
6
  exports.getOrderMessage = getOrderMessage;
@@ -22,7 +23,9 @@ exports.signatureHex = signatureHex;
22
23
  exports.isSigned = isSigned;
23
24
  exports.deriveOrderbookId = deriveOrderbookId;
24
25
  exports.cancelOrderMessage = cancelOrderMessage;
26
+ exports.cancelTriggerOrderMessage = cancelTriggerOrderMessage;
25
27
  exports.signCancelOrder = signCancelOrder;
28
+ exports.signCancelTriggerOrder = signCancelTriggerOrder;
26
29
  exports.cancelAllMessage = cancelAllMessage;
27
30
  exports.signCancelAll = signCancelAll;
28
31
  exports.toSubmitRequest = toSubmitRequest;
@@ -38,7 +41,7 @@ const utils_1 = require("./utils");
38
41
  * Hash an order using keccak256
39
42
  * Layout (161 bytes - order without signature):
40
43
  * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
41
- * side (1) || makerAmount (8) || takerAmount (8) || expiration (8)
44
+ * side (1) || amountIn (8) || amountOut (8) || expiration (8)
42
45
  *
43
46
  * @returns 32-byte keccak256 hash
44
47
  */
@@ -50,8 +53,8 @@ function hashOrder(order) {
50
53
  order.baseMint.toBuffer(),
51
54
  order.quoteMint.toBuffer(),
52
55
  (0, utils_1.toU8)(order.side),
53
- (0, utils_1.toU64Le)(order.makerAmount),
54
- (0, utils_1.toU64Le)(order.takerAmount),
56
+ (0, utils_1.toU64Le)(order.amountIn),
57
+ (0, utils_1.toU64Le)(order.amountOut),
55
58
  (0, utils_1.toI64Le)(order.expiration),
56
59
  ]);
57
60
  return (0, utils_1.keccak256)(data);
@@ -120,8 +123,8 @@ function verifyOrderSignature(order) {
120
123
  * [72..104] baseMint (Pubkey)
121
124
  * [104..136] quoteMint (Pubkey)
122
125
  * [136] side (u8)
123
- * [137..145] makerAmount (u64)
124
- * [145..153] takerAmount (u64)
126
+ * [137..145] amountIn (u64)
127
+ * [145..153] amountOut (u64)
125
128
  * [153..161] expiration (i64)
126
129
  * [161..225] signature (64 bytes)
127
130
  */
@@ -140,9 +143,9 @@ function serializeSignedOrder(order) {
140
143
  offset += 32;
141
144
  buffer[offset] = order.side;
142
145
  offset += 1;
143
- (0, utils_1.toU64Le)(order.makerAmount).copy(buffer, offset);
146
+ (0, utils_1.toU64Le)(order.amountIn).copy(buffer, offset);
144
147
  offset += 8;
145
- (0, utils_1.toU64Le)(order.takerAmount).copy(buffer, offset);
148
+ (0, utils_1.toU64Le)(order.amountOut).copy(buffer, offset);
146
149
  offset += 8;
147
150
  (0, utils_1.toI64Le)(order.expiration).copy(buffer, offset);
148
151
  offset += 8;
@@ -173,9 +176,9 @@ function deserializeSignedOrder(data) {
173
176
  offset += 32;
174
177
  const side = data[offset];
175
178
  offset += 1;
176
- const makerAmount = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
179
+ const amountIn = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
177
180
  offset += 8;
178
- const takerAmount = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
181
+ const amountOut = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
179
182
  offset += 8;
180
183
  const expiration = (0, utils_1.fromI64Le)(data.subarray(offset, offset + 8));
181
184
  offset += 8;
@@ -187,8 +190,8 @@ function deserializeSignedOrder(data) {
187
190
  baseMint,
188
191
  quoteMint,
189
192
  side,
190
- makerAmount,
191
- takerAmount,
193
+ amountIn,
194
+ amountOut,
192
195
  expiration,
193
196
  signature,
194
197
  };
@@ -202,8 +205,8 @@ function deserializeSignedOrder(data) {
202
205
  * Layout:
203
206
  * [0..4] nonce (u32)
204
207
  * [4] side (u8)
205
- * [5..13] makerAmount (u64)
206
- * [13..21] takerAmount (u64)
208
+ * [5..13] amountIn (u64)
209
+ * [13..21] amountOut (u64)
207
210
  * [21..29] expiration (i64)
208
211
  */
209
212
  function serializeOrder(order) {
@@ -213,9 +216,9 @@ function serializeOrder(order) {
213
216
  offset += 4;
214
217
  buffer[offset] = order.side;
215
218
  offset += 1;
216
- (0, utils_1.toU64Le)(order.makerAmount).copy(buffer, offset);
219
+ (0, utils_1.toU64Le)(order.amountIn).copy(buffer, offset);
217
220
  offset += 8;
218
- (0, utils_1.toU64Le)(order.takerAmount).copy(buffer, offset);
221
+ (0, utils_1.toU64Le)(order.amountOut).copy(buffer, offset);
219
222
  offset += 8;
220
223
  (0, utils_1.toI64Le)(order.expiration).copy(buffer, offset);
221
224
  return buffer;
@@ -232,16 +235,16 @@ function deserializeOrder(data) {
232
235
  offset += 4;
233
236
  const side = data[offset];
234
237
  offset += 1;
235
- const makerAmount = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
238
+ const amountIn = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
236
239
  offset += 8;
237
- const takerAmount = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
240
+ const amountOut = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
238
241
  offset += 8;
239
242
  const expiration = (0, utils_1.fromI64Le)(data.subarray(offset, offset + 8));
240
243
  return {
241
244
  nonce,
242
245
  side,
243
- makerAmount,
244
- takerAmount,
246
+ amountIn,
247
+ amountOut,
245
248
  expiration,
246
249
  };
247
250
  }
@@ -252,8 +255,8 @@ function signedOrderToOrder(order) {
252
255
  return {
253
256
  nonce: order.nonce,
254
257
  side: order.side,
255
- makerAmount: order.makerAmount,
256
- takerAmount: order.takerAmount,
258
+ amountIn: order.amountIn,
259
+ amountOut: order.amountOut,
257
260
  expiration: order.expiration,
258
261
  };
259
262
  }
@@ -271,8 +274,8 @@ function createBidOrder(params) {
271
274
  baseMint: params.baseMint,
272
275
  quoteMint: params.quoteMint,
273
276
  side: types_1.OrderSide.BID,
274
- makerAmount: params.makerAmount,
275
- takerAmount: params.takerAmount,
277
+ amountIn: params.amountIn,
278
+ amountOut: params.amountOut,
276
279
  expiration: params.expiration ?? 0n,
277
280
  };
278
281
  }
@@ -287,8 +290,8 @@ function createAskOrder(params) {
287
290
  baseMint: params.baseMint,
288
291
  quoteMint: params.quoteMint,
289
292
  side: types_1.OrderSide.ASK,
290
- makerAmount: params.makerAmount,
291
- takerAmount: params.takerAmount,
293
+ amountIn: params.amountIn,
294
+ amountOut: params.amountOut,
292
295
  expiration: params.expiration ?? 0n,
293
296
  };
294
297
  }
@@ -326,14 +329,14 @@ function ordersCanCross(buyOrder, sellOrder) {
326
329
  if (buyOrder.side !== types_1.OrderSide.BID || sellOrder.side !== types_1.OrderSide.ASK) {
327
330
  return false;
328
331
  }
329
- return (buyOrder.makerAmount * sellOrder.makerAmount >=
330
- buyOrder.takerAmount * sellOrder.takerAmount);
332
+ return (buyOrder.amountIn * sellOrder.amountIn >=
333
+ buyOrder.amountOut * sellOrder.amountOut);
331
334
  }
332
335
  /**
333
336
  * Calculate the fill amounts for a trade
334
337
  */
335
338
  function calculateTakerFill(makerOrder, makerFillAmount) {
336
- return (makerFillAmount * makerOrder.takerAmount) / makerOrder.makerAmount;
339
+ return (makerFillAmount * makerOrder.amountOut) / makerOrder.amountIn;
337
340
  }
338
341
  // ============================================================================
339
342
  // SIGNED ORDER HELPERS
@@ -367,6 +370,13 @@ function deriveOrderbookId(baseToken, quoteToken) {
367
370
  function cancelOrderMessage(orderHash) {
368
371
  return Buffer.from(orderHash, "ascii");
369
372
  }
373
+ /**
374
+ * Build the message bytes for cancelling a trigger order.
375
+ * The message is the trigger order ID as UTF-8 bytes.
376
+ */
377
+ function cancelTriggerOrderMessage(triggerOrderId) {
378
+ return Buffer.from(triggerOrderId, "ascii");
379
+ }
370
380
  /**
371
381
  * Sign a cancel order request.
372
382
  * Returns the signature as a 128-char hex string.
@@ -376,6 +386,15 @@ function signCancelOrder(orderHash, signer) {
376
386
  const signature = tweetnacl_1.sign.detached(message, signer.secretKey);
377
387
  return Buffer.from(signature).toString("hex");
378
388
  }
389
+ /**
390
+ * Sign a cancel trigger-order request.
391
+ * Returns the signature as a 128-char hex string.
392
+ */
393
+ function signCancelTriggerOrder(triggerOrderId, signer) {
394
+ const message = cancelTriggerOrderMessage(triggerOrderId);
395
+ const signature = tweetnacl_1.sign.detached(message, signer.secretKey);
396
+ return Buffer.from(signature).toString("hex");
397
+ }
379
398
  /**
380
399
  * Build the message string for cancelling all orders.
381
400
  * Format: "cancel_all:{pubkey}:{timestamp}"
@@ -402,16 +421,24 @@ function signCancelAll(userPubkey, timestamp, signer) {
402
421
  function toSubmitRequest(order, orderbookId) {
403
422
  return {
404
423
  maker: order.maker.toBase58(),
405
- nonce: order.nonce.toString(),
424
+ nonce: order.nonce,
406
425
  market_pubkey: order.market.toBase58(),
407
426
  base_token: order.baseMint.toBase58(),
408
427
  quote_token: order.quoteMint.toBase58(),
409
428
  side: order.side,
410
- maker_amount: order.makerAmount.toString(),
411
- taker_amount: order.takerAmount.toString(),
429
+ amount_in: order.amountIn.toString(),
430
+ amount_out: order.amountOut.toString(),
412
431
  expiration: Number(order.expiration),
413
432
  signature: signatureHex(order),
414
433
  orderbook_id: orderbookId,
415
434
  };
416
435
  }
436
+ // Rust-compatible snake_case aliases.
437
+ exports.is_order_expired = isOrderExpired;
438
+ exports.orders_can_cross = ordersCanCross;
439
+ exports.calculate_taker_fill = calculateTakerFill;
440
+ exports.cancel_order_message = cancelOrderMessage;
441
+ exports.cancel_trigger_order_message = cancelTriggerOrderMessage;
442
+ exports.cancel_all_message = cancelAllMessage;
443
+ exports.derive_condition_id = utils_1.deriveConditionId;
417
444
  //# sourceMappingURL=orders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":";;AAwBA,8BAcC;AAKD,oCAEC;AAKD,0CAEC;AAWD,8BAMC;AAKD,sCAaC;AAMD,oDASC;AAqBD,oDAkCC;AAKD,wDAsDC;AAgBD,wCAmBC;AAKD,4CA8BC;AAKD,gDAQC;AASD,wCAcC;AAKD,wCAcC;AAKD,oDAMC;AAKD,oDAMC;AASD,wCASC;AAKD,wCAWC;AAKD,gDAKC;AASD,oCAEC;AAKD,4BAEC;AAMD,8CAKC;AAUD,gDAEC;AAMD,0CAIC;AAMD,4CAEC;AAMD,sCAKC;AASD,0CA6BC;AAngBD,6CAAqD;AACrD,yCAAiC;AACjC,mCAMiB;AACjB,2CAAyC;AACzC,mCAA6F;AAE7F,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,KAAkB;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,IAAA,eAAO,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;QACtB,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvB,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC1B,IAAA,YAAI,EAAC,KAAK,CAAC,IAAI,CAAC;QAChB,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC;QAC1B,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC;QAC1B,IAAA,eAAO,EAAC,KAAK,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAC;IAEH,OAAO,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAkB;IAC7C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAkB;IAChD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAkB,EAAE,MAAe;IAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,gBAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,KAAqC,EACrC,MAAe;IAEf,MAAM,iBAAiB,GAAgB;QACrC,GAAG,KAAK;QACR,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;KAC5B,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO;QACL,GAAG,KAAK;QACR,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,gBAAI,CAAC,QAAQ,CAAC,MAAM,CACzB,YAAY,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CACtB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAAC,KAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAU,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAA,eAAO,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,CAAC;IAEZ,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,EAAE,CAAC;IAEb,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,EAAE,CAAC;IAEb,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,IAAI,EAAE,CAAC;IAEb,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,IAAI,CAAC,CAAC;IAEZ,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAU,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,MAAM,cAAc,sBAAU,CAAC,YAAY,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,KAAK,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,QAAQ,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAc,CAAC;IACvC,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAElE,OAAO;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,QAAQ;QACR,SAAS;QACT,IAAI;QACJ,WAAW;QACX,WAAW;QACX,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAAC,KAAY;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAA,eAAO,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,CAAC;IAEZ,IAAA,eAAO,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAU,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,MAAM,cAAc,sBAAU,CAAC,KAAK,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAc,CAAC;IACvC,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,OAAO;QACL,KAAK;QACL,IAAI;QACJ,WAAW;QACX,WAAW;QACX,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAkB;IACnD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,cAAc,CAC5B,MAAsB;IAEtB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,iBAAS,CAAC,GAAG;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,MAAsB;IAEtB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,iBAAS,CAAC,GAAG;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAsB,EACtB,MAAe;IAEf,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAsB,EACtB,MAAe;IAEf,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAA0B,EAC1B,WAAoB;IAEpB,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,QAAqB,EACrB,SAAsB;IAEtB,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAS,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAS,CAAC,GAAG,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW;QAC5C,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,UAAuB,EACvB,eAAuB;IAEvB,OAAO,CAAC,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;AAC7E,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAkB;IAC7C,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAkB;IACzC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,SAAiB,EACjB,UAAkB;IAElB,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,SAAiB;IAClD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,SAAiB,EAAE,MAAe;IAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,SAAiB;IACpE,OAAO,cAAc,UAAU,IAAI,SAAS,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAE,MAAe;IAClF,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,gBAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,eAAe,CAC7B,KAAkB,EAClB,WAAmB;IAcnB,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC7B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC7B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACtC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACrC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC1C,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC1C,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;QAC9B,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC","sourcesContent":["import { PublicKey, Keypair } from \"@solana/web3.js\";\nimport { sign } from \"tweetnacl\";\nimport {\n SignedOrder,\n Order,\n OrderSide,\n BidOrderParams,\n AskOrderParams,\n} from \"./types\";\nimport { ORDER_SIZE } from \"./constants\";\nimport { keccak256, toU64Le, toI64Le, toU8, toU32Le, fromLeBytes, fromI64Le } from \"./utils\";\n\n// ============================================================================\n// ORDER HASHING\n// ============================================================================\n\n/**\n * Hash an order using keccak256\n * Layout (161 bytes - order without signature):\n * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||\n * side (1) || makerAmount (8) || takerAmount (8) || expiration (8)\n *\n * @returns 32-byte keccak256 hash\n */\nexport function hashOrder(order: SignedOrder): Buffer {\n const data = Buffer.concat([\n toU64Le(BigInt(order.nonce)),\n order.maker.toBuffer(),\n order.market.toBuffer(),\n order.baseMint.toBuffer(),\n order.quoteMint.toBuffer(),\n toU8(order.side),\n toU64Le(order.makerAmount),\n toU64Le(order.takerAmount),\n toI64Le(order.expiration),\n ]);\n\n return keccak256(data);\n}\n\n/**\n * Get the hex-encoded hash of an order\n */\nexport function hashOrderHex(order: SignedOrder): string {\n return hashOrder(order).toString(\"hex\");\n}\n\n/**\n * Get the message to sign for an order (the order hash)\n */\nexport function getOrderMessage(order: SignedOrder): Buffer {\n return hashOrder(order);\n}\n\n// ============================================================================\n// ORDER SIGNING\n// ============================================================================\n\n/**\n * Sign an order with a Keypair.\n * Signs the hex-encoded keccak hash (64-char ASCII string) for cross-compatibility with Rust.\n * Returns 64-byte Ed25519 signature.\n */\nexport function signOrder(order: SignedOrder, signer: Keypair): Buffer {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature);\n}\n\n/**\n * Sign an order and return a new order with the signature attached\n */\nexport function signOrderFull(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n): SignedOrder {\n const orderWithEmptySig: SignedOrder = {\n ...order,\n signature: Buffer.alloc(64),\n };\n const signature = signOrder(orderWithEmptySig, signer);\n return {\n ...order,\n signature,\n };\n}\n\n/**\n * Verify an order's signature.\n * Verifies against the hex-encoded keccak hash.\n */\nexport function verifyOrderSignature(order: SignedOrder): boolean {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n return sign.detached.verify(\n messageBytes,\n order.signature,\n order.maker.toBytes()\n );\n}\n\n// ============================================================================\n// SIGNED ORDER SERIALIZATION (225 bytes)\n// ============================================================================\n\n/**\n * Serialize a signed order to bytes (225 bytes)\n *\n * Layout:\n * [0..8] nonce (u64)\n * [8..40] maker (Pubkey)\n * [40..72] market (Pubkey)\n * [72..104] baseMint (Pubkey)\n * [104..136] quoteMint (Pubkey)\n * [136] side (u8)\n * [137..145] makerAmount (u64)\n * [145..153] takerAmount (u64)\n * [153..161] expiration (i64)\n * [161..225] signature (64 bytes)\n */\nexport function serializeSignedOrder(order: SignedOrder): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.SIGNED_ORDER);\n let offset = 0;\n\n toU64Le(BigInt(order.nonce)).copy(buffer, offset);\n offset += 8;\n\n order.maker.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.market.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.baseMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.quoteMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n offset += 8;\n\n order.signature.copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a signed order from bytes\n */\nexport function deserializeSignedOrder(data: Buffer): SignedOrder {\n if (data.length < ORDER_SIZE.SIGNED_ORDER) {\n throw new Error(\n `Invalid signed order length: ${data.length}, expected ${ORDER_SIZE.SIGNED_ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonceU64 = fromLeBytes(data.subarray(offset, offset + 8));\n if (nonceU64 > 0xFFFFFFFFn) {\n throw new Error(`Nonce exceeds u32 range: ${nonceU64}`);\n }\n const nonce = Number(nonceU64);\n offset += 8;\n\n const maker = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const market = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const baseMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const quoteMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n offset += 8;\n\n const signature = Buffer.from(data.subarray(offset, offset + 64));\n\n return {\n nonce,\n maker,\n market,\n baseMint,\n quoteMint,\n side,\n makerAmount,\n takerAmount,\n expiration,\n signature,\n };\n}\n\n// ============================================================================\n// ORDER SERIALIZATION (29 bytes)\n// ============================================================================\n\n/**\n * Serialize a compact order to bytes (29 bytes)\n *\n * Layout:\n * [0..4] nonce (u32)\n * [4] side (u8)\n * [5..13] makerAmount (u64)\n * [13..21] takerAmount (u64)\n * [21..29] expiration (i64)\n */\nexport function serializeOrder(order: Order): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.ORDER);\n let offset = 0;\n\n toU32Le(order.nonce).copy(buffer, offset);\n offset += 4;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a compact order from bytes\n */\nexport function deserializeOrder(data: Buffer): Order {\n if (data.length < ORDER_SIZE.ORDER) {\n throw new Error(\n `Invalid order length: ${data.length}, expected ${ORDER_SIZE.ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonce = data.readUInt32LE(offset);\n offset += 4;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n\n return {\n nonce,\n side,\n makerAmount,\n takerAmount,\n expiration,\n };\n}\n\n/**\n * Convert a SignedOrder to a compact Order (drop maker)\n */\nexport function signedOrderToOrder(order: SignedOrder): Order {\n return {\n nonce: order.nonce,\n side: order.side,\n makerAmount: order.makerAmount,\n takerAmount: order.takerAmount,\n expiration: order.expiration,\n };\n}\n\n// ============================================================================\n// ORDER CREATION HELPERS\n// ============================================================================\n\n/**\n * Create a BID order (buyer wants base tokens, pays with quote tokens)\n */\nexport function createBidOrder(\n params: BidOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.BID,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create an ASK order (seller offers base tokens, receives quote tokens)\n */\nexport function createAskOrder(\n params: AskOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.ASK,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create and sign a BID order in one step\n */\nexport function createSignedBidOrder(\n params: BidOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createBidOrder(params);\n return signOrderFull(order, signer);\n}\n\n/**\n * Create and sign an ASK order in one step\n */\nexport function createSignedAskOrder(\n params: AskOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createAskOrder(params);\n return signOrderFull(order, signer);\n}\n\n// ============================================================================\n// ORDER VALIDATION\n// ============================================================================\n\n/**\n * Check if an order has expired\n */\nexport function isOrderExpired(\n order: SignedOrder | Order,\n currentTime?: bigint\n): boolean {\n if (order.expiration === 0n) {\n return false;\n }\n const now = currentTime ?? BigInt(Math.floor(Date.now() / 1000));\n return order.expiration < now;\n}\n\n/**\n * Validate order crossing (orders are compatible for matching)\n */\nexport function ordersCanCross(\n buyOrder: SignedOrder,\n sellOrder: SignedOrder\n): boolean {\n if (buyOrder.side !== OrderSide.BID || sellOrder.side !== OrderSide.ASK) {\n return false;\n }\n return (\n buyOrder.makerAmount * sellOrder.makerAmount >=\n buyOrder.takerAmount * sellOrder.takerAmount\n );\n}\n\n/**\n * Calculate the fill amounts for a trade\n */\nexport function calculateTakerFill(\n makerOrder: SignedOrder,\n makerFillAmount: bigint\n): bigint {\n return (makerFillAmount * makerOrder.takerAmount) / makerOrder.makerAmount;\n}\n\n// ============================================================================\n// SIGNED ORDER HELPERS\n// ============================================================================\n\n/**\n * Get signature as hex string (128 chars)\n */\nexport function signatureHex(order: SignedOrder): string {\n return order.signature.toString(\"hex\");\n}\n\n/**\n * Check if a signed order has a non-zero signature\n */\nexport function isSigned(order: SignedOrder): boolean {\n return !order.signature.every((b) => b === 0);\n}\n\n/**\n * Derive orderbook ID from base and quote token addresses\n * Format: \"{base[0:8]}_{quote[0:8]}\"\n */\nexport function deriveOrderbookId(\n baseToken: string,\n quoteToken: string\n): string {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;\n}\n\n// ============================================================================\n// CANCEL ORDER SIGNING\n// ============================================================================\n\n/**\n * Build the message bytes for cancelling an order.\n * The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).\n */\nexport function cancelOrderMessage(orderHash: string): Uint8Array {\n return Buffer.from(orderHash, \"ascii\");\n}\n\n/**\n * Sign a cancel order request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelOrder(orderHash: string, signer: Keypair): string {\n const message = cancelOrderMessage(orderHash);\n const signature = sign.detached(message, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n/**\n * Build the message string for cancelling all orders.\n * Format: \"cancel_all:{pubkey}:{timestamp}\"\n */\nexport function cancelAllMessage(userPubkey: string, timestamp: number): string {\n return `cancel_all:${userPubkey}:${timestamp}`;\n}\n\n/**\n * Sign a cancel-all orders request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelAll(userPubkey: string, timestamp: number, signer: Keypair): string {\n const message = cancelAllMessage(userPubkey, timestamp);\n const messageBytes = Buffer.from(message, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n// ============================================================================\n// SUBMIT REQUEST HELPERS\n// ============================================================================\n\n/**\n * Convert a SignedOrder to a SubmitOrderRequest-compatible object\n */\nexport function toSubmitRequest(\n order: SignedOrder,\n orderbookId: string\n): {\n maker: string;\n nonce: string;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n maker_amount: string;\n taker_amount: string;\n expiration: number;\n signature: string;\n orderbook_id: string;\n} {\n return {\n maker: order.maker.toBase58(),\n nonce: order.nonce.toString(),\n market_pubkey: order.market.toBase58(),\n base_token: order.baseMint.toBase58(),\n quote_token: order.quoteMint.toBase58(),\n side: order.side,\n maker_amount: order.makerAmount.toString(),\n taker_amount: order.takerAmount.toString(),\n expiration: Number(order.expiration),\n signature: signatureHex(order),\n orderbook_id: orderbookId,\n };\n}\n"]}
1
+ {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Keypair } from \"@solana/web3.js\";\nimport { sign } from \"tweetnacl\";\nimport {\n SignedOrder,\n Order,\n OrderSide,\n BidOrderParams,\n AskOrderParams,\n} from \"./types\";\nimport { ORDER_SIZE } from \"./constants\";\nimport {\n keccak256,\n toU64Le,\n toI64Le,\n toU8,\n toU32Le,\n fromLeBytes,\n fromI64Le,\n deriveConditionId,\n} from \"./utils\";\n\n// ============================================================================\n// ORDER HASHING\n// ============================================================================\n\n/**\n * Hash an order using keccak256\n * Layout (161 bytes - order without signature):\n * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||\n * side (1) || amountIn (8) || amountOut (8) || expiration (8)\n *\n * @returns 32-byte keccak256 hash\n */\nexport function hashOrder(order: SignedOrder): Buffer {\n const data = Buffer.concat([\n toU64Le(BigInt(order.nonce)),\n order.maker.toBuffer(),\n order.market.toBuffer(),\n order.baseMint.toBuffer(),\n order.quoteMint.toBuffer(),\n toU8(order.side),\n toU64Le(order.amountIn),\n toU64Le(order.amountOut),\n toI64Le(order.expiration),\n ]);\n\n return keccak256(data);\n}\n\n/**\n * Get the hex-encoded hash of an order\n */\nexport function hashOrderHex(order: SignedOrder): string {\n return hashOrder(order).toString(\"hex\");\n}\n\n/**\n * Get the message to sign for an order (the order hash)\n */\nexport function getOrderMessage(order: SignedOrder): Buffer {\n return hashOrder(order);\n}\n\n// ============================================================================\n// ORDER SIGNING\n// ============================================================================\n\n/**\n * Sign an order with a Keypair.\n * Signs the hex-encoded keccak hash (64-char ASCII string) for cross-compatibility with Rust.\n * Returns 64-byte Ed25519 signature.\n */\nexport function signOrder(order: SignedOrder, signer: Keypair): Buffer {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature);\n}\n\n/**\n * Sign an order and return a new order with the signature attached\n */\nexport function signOrderFull(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n): SignedOrder {\n const orderWithEmptySig: SignedOrder = {\n ...order,\n signature: Buffer.alloc(64),\n };\n const signature = signOrder(orderWithEmptySig, signer);\n return {\n ...order,\n signature,\n };\n}\n\n/**\n * Verify an order's signature.\n * Verifies against the hex-encoded keccak hash.\n */\nexport function verifyOrderSignature(order: SignedOrder): boolean {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n return sign.detached.verify(\n messageBytes,\n order.signature,\n order.maker.toBytes()\n );\n}\n\n// ============================================================================\n// SIGNED ORDER SERIALIZATION (225 bytes)\n// ============================================================================\n\n/**\n * Serialize a signed order to bytes (225 bytes)\n *\n * Layout:\n * [0..8] nonce (u64)\n * [8..40] maker (Pubkey)\n * [40..72] market (Pubkey)\n * [72..104] baseMint (Pubkey)\n * [104..136] quoteMint (Pubkey)\n * [136] side (u8)\n * [137..145] amountIn (u64)\n * [145..153] amountOut (u64)\n * [153..161] expiration (i64)\n * [161..225] signature (64 bytes)\n */\nexport function serializeSignedOrder(order: SignedOrder): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.SIGNED_ORDER);\n let offset = 0;\n\n toU64Le(BigInt(order.nonce)).copy(buffer, offset);\n offset += 8;\n\n order.maker.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.market.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.baseMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.quoteMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.amountIn).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.amountOut).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n offset += 8;\n\n order.signature.copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a signed order from bytes\n */\nexport function deserializeSignedOrder(data: Buffer): SignedOrder {\n if (data.length < ORDER_SIZE.SIGNED_ORDER) {\n throw new Error(\n `Invalid signed order length: ${data.length}, expected ${ORDER_SIZE.SIGNED_ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonceU64 = fromLeBytes(data.subarray(offset, offset + 8));\n if (nonceU64 > 0xFFFFFFFFn) {\n throw new Error(`Nonce exceeds u32 range: ${nonceU64}`);\n }\n const nonce = Number(nonceU64);\n offset += 8;\n\n const maker = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const market = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const baseMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const quoteMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const amountIn = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const amountOut = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n offset += 8;\n\n const signature = Buffer.from(data.subarray(offset, offset + 64));\n\n return {\n nonce,\n maker,\n market,\n baseMint,\n quoteMint,\n side,\n amountIn,\n amountOut,\n expiration,\n signature,\n };\n}\n\n// ============================================================================\n// ORDER SERIALIZATION (29 bytes)\n// ============================================================================\n\n/**\n * Serialize a compact order to bytes (29 bytes)\n *\n * Layout:\n * [0..4] nonce (u32)\n * [4] side (u8)\n * [5..13] amountIn (u64)\n * [13..21] amountOut (u64)\n * [21..29] expiration (i64)\n */\nexport function serializeOrder(order: Order): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.ORDER);\n let offset = 0;\n\n toU32Le(order.nonce).copy(buffer, offset);\n offset += 4;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.amountIn).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.amountOut).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a compact order from bytes\n */\nexport function deserializeOrder(data: Buffer): Order {\n if (data.length < ORDER_SIZE.ORDER) {\n throw new Error(\n `Invalid order length: ${data.length}, expected ${ORDER_SIZE.ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonce = data.readUInt32LE(offset);\n offset += 4;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const amountIn = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const amountOut = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n\n return {\n nonce,\n side,\n amountIn,\n amountOut,\n expiration,\n };\n}\n\n/**\n * Convert a SignedOrder to a compact Order (drop maker)\n */\nexport function signedOrderToOrder(order: SignedOrder): Order {\n return {\n nonce: order.nonce,\n side: order.side,\n amountIn: order.amountIn,\n amountOut: order.amountOut,\n expiration: order.expiration,\n };\n}\n\n// ============================================================================\n// ORDER CREATION HELPERS\n// ============================================================================\n\n/**\n * Create a BID order (buyer wants base tokens, pays with quote tokens)\n */\nexport function createBidOrder(\n params: BidOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.BID,\n amountIn: params.amountIn,\n amountOut: params.amountOut,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create an ASK order (seller offers base tokens, receives quote tokens)\n */\nexport function createAskOrder(\n params: AskOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.ASK,\n amountIn: params.amountIn,\n amountOut: params.amountOut,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create and sign a BID order in one step\n */\nexport function createSignedBidOrder(\n params: BidOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createBidOrder(params);\n return signOrderFull(order, signer);\n}\n\n/**\n * Create and sign an ASK order in one step\n */\nexport function createSignedAskOrder(\n params: AskOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createAskOrder(params);\n return signOrderFull(order, signer);\n}\n\n// ============================================================================\n// ORDER VALIDATION\n// ============================================================================\n\n/**\n * Check if an order has expired\n */\nexport function isOrderExpired(\n order: SignedOrder | Order,\n currentTime?: bigint\n): boolean {\n if (order.expiration === 0n) {\n return false;\n }\n const now = currentTime ?? BigInt(Math.floor(Date.now() / 1000));\n return order.expiration < now;\n}\n\n/**\n * Validate order crossing (orders are compatible for matching)\n */\nexport function ordersCanCross(\n buyOrder: SignedOrder,\n sellOrder: SignedOrder\n): boolean {\n if (buyOrder.side !== OrderSide.BID || sellOrder.side !== OrderSide.ASK) {\n return false;\n }\n return (\n buyOrder.amountIn * sellOrder.amountIn >=\n buyOrder.amountOut * sellOrder.amountOut\n );\n}\n\n/**\n * Calculate the fill amounts for a trade\n */\nexport function calculateTakerFill(\n makerOrder: SignedOrder,\n makerFillAmount: bigint\n): bigint {\n return (makerFillAmount * makerOrder.amountOut) / makerOrder.amountIn;\n}\n\n// ============================================================================\n// SIGNED ORDER HELPERS\n// ============================================================================\n\n/**\n * Get signature as hex string (128 chars)\n */\nexport function signatureHex(order: SignedOrder): string {\n return order.signature.toString(\"hex\");\n}\n\n/**\n * Check if a signed order has a non-zero signature\n */\nexport function isSigned(order: SignedOrder): boolean {\n return !order.signature.every((b) => b === 0);\n}\n\n/**\n * Derive orderbook ID from base and quote token addresses\n * Format: \"{base[0:8]}_{quote[0:8]}\"\n */\nexport function deriveOrderbookId(\n baseToken: string,\n quoteToken: string\n): string {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;\n}\n\n// ============================================================================\n// CANCEL ORDER SIGNING\n// ============================================================================\n\n/**\n * Build the message bytes for cancelling an order.\n * The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).\n */\nexport function cancelOrderMessage(orderHash: string): Uint8Array {\n return Buffer.from(orderHash, \"ascii\");\n}\n\n/**\n * Build the message bytes for cancelling a trigger order.\n * The message is the trigger order ID as UTF-8 bytes.\n */\nexport function cancelTriggerOrderMessage(triggerOrderId: string): Uint8Array {\n return Buffer.from(triggerOrderId, \"ascii\");\n}\n\n/**\n * Sign a cancel order request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelOrder(orderHash: string, signer: Keypair): string {\n const message = cancelOrderMessage(orderHash);\n const signature = sign.detached(message, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n/**\n * Sign a cancel trigger-order request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelTriggerOrder(triggerOrderId: string, signer: Keypair): string {\n const message = cancelTriggerOrderMessage(triggerOrderId);\n const signature = sign.detached(message, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n/**\n * Build the message string for cancelling all orders.\n * Format: \"cancel_all:{pubkey}:{timestamp}\"\n */\nexport function cancelAllMessage(userPubkey: string, timestamp: number): string {\n return `cancel_all:${userPubkey}:${timestamp}`;\n}\n\n/**\n * Sign a cancel-all orders request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelAll(userPubkey: string, timestamp: number, signer: Keypair): string {\n const message = cancelAllMessage(userPubkey, timestamp);\n const messageBytes = Buffer.from(message, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n// ============================================================================\n// SUBMIT REQUEST HELPERS\n// ============================================================================\n\n/**\n * Convert a SignedOrder to a SubmitOrderRequest-compatible object\n */\nexport function toSubmitRequest(\n order: SignedOrder,\n orderbookId: string\n): {\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} {\n return {\n maker: order.maker.toBase58(),\n nonce: order.nonce,\n market_pubkey: order.market.toBase58(),\n base_token: order.baseMint.toBase58(),\n quote_token: order.quoteMint.toBase58(),\n side: order.side,\n amount_in: order.amountIn.toString(),\n amount_out: order.amountOut.toString(),\n expiration: Number(order.expiration),\n signature: signatureHex(order),\n orderbook_id: orderbookId,\n };\n}\n\n// Rust-compatible snake_case aliases.\nexport const is_order_expired = isOrderExpired;\nexport const orders_can_cross = ordersCanCross;\nexport const calculate_taker_fill = calculateTakerFill;\nexport const cancel_order_message = cancelOrderMessage;\nexport const cancel_trigger_order_message = cancelTriggerOrderMessage;\nexport const cancel_all_message = cancelAllMessage;\nexport const derive_condition_id = deriveConditionId;\n"]}
@@ -54,6 +54,22 @@ export declare function getOrderbookPda(mintA: PublicKey, mintB: PublicKey, prog
54
54
  * Program: ALT_PROGRAM_ID
55
55
  */
56
56
  export declare function getAltPda(orderbook: PublicKey, recentSlot: bigint): [PublicKey, number];
57
+ /**
58
+ * Derive GlobalDepositToken whitelist PDA.
59
+ * Seeds: ["global_deposit", mint]
60
+ */
61
+ export declare function getGlobalDepositTokenPda(mint: PublicKey, programId?: PublicKey): [PublicKey, number];
62
+ /**
63
+ * Derive User Global Deposit PDA.
64
+ * Seeds: ["global_deposit", user, mint]
65
+ */
66
+ export declare function getUserGlobalDepositPda(user: PublicKey, mint: PublicKey, programId?: PublicKey): [PublicKey, number];
67
+ /**
68
+ * Derive position ALT PDA used by initPositionTokens.
69
+ * Seeds: [position, recent_slot]
70
+ * Program: ALT_PROGRAM_ID
71
+ */
72
+ export declare function getPositionAltPda(position: PublicKey, recentSlot: bigint): [PublicKey, number];
57
73
  /**
58
74
  * Collection of all PDA functions for easy access
59
75
  */
@@ -69,5 +85,8 @@ export declare const pda: {
69
85
  getPositionPda: typeof getPositionPda;
70
86
  getOrderbookPda: typeof getOrderbookPda;
71
87
  getAltPda: typeof getAltPda;
88
+ getGlobalDepositTokenPda: typeof getGlobalDepositTokenPda;
89
+ getUserGlobalDepositPda: typeof getUserGlobalDepositPda;
90
+ getPositionAltPda: typeof getPositionAltPda;
72
91
  };
73
92
  //# sourceMappingURL=pda.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAUrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAMvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;CAYf,CAAC"}
1
+ {"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAUrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAMvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,MAAM,GACjB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;CAef,CAAC"}
@@ -12,6 +12,9 @@ exports.getUserNoncePda = getUserNoncePda;
12
12
  exports.getPositionPda = getPositionPda;
13
13
  exports.getOrderbookPda = getOrderbookPda;
14
14
  exports.getAltPda = getAltPda;
15
+ exports.getGlobalDepositTokenPda = getGlobalDepositTokenPda;
16
+ exports.getUserGlobalDepositPda = getUserGlobalDepositPda;
17
+ exports.getPositionAltPda = getPositionAltPda;
15
18
  const web3_js_1 = require("@solana/web3.js");
16
19
  const constants_1 = require("./constants");
17
20
  const utils_1 = require("./utils");
@@ -112,6 +115,28 @@ function getOrderbookPda(mintA, mintB, programId = constants_1.PROGRAM_ID) {
112
115
  function getAltPda(orderbook, recentSlot) {
113
116
  return web3_js_1.PublicKey.findProgramAddressSync([orderbook.toBuffer(), (0, utils_1.toU64Le)(recentSlot)], constants_1.ALT_PROGRAM_ID);
114
117
  }
118
+ /**
119
+ * Derive GlobalDepositToken whitelist PDA.
120
+ * Seeds: ["global_deposit", mint]
121
+ */
122
+ function getGlobalDepositTokenPda(mint, programId = constants_1.PROGRAM_ID) {
123
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.GLOBAL_DEPOSIT), mint.toBuffer()], programId);
124
+ }
125
+ /**
126
+ * Derive User Global Deposit PDA.
127
+ * Seeds: ["global_deposit", user, mint]
128
+ */
129
+ function getUserGlobalDepositPda(user, mint, programId = constants_1.PROGRAM_ID) {
130
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.GLOBAL_DEPOSIT), user.toBuffer(), mint.toBuffer()], programId);
131
+ }
132
+ /**
133
+ * Derive position ALT PDA used by initPositionTokens.
134
+ * Seeds: [position, recent_slot]
135
+ * Program: ALT_PROGRAM_ID
136
+ */
137
+ function getPositionAltPda(position, recentSlot) {
138
+ return web3_js_1.PublicKey.findProgramAddressSync([position.toBuffer(), (0, utils_1.toU64Le)(recentSlot)], constants_1.ALT_PROGRAM_ID);
139
+ }
115
140
  /**
116
141
  * Collection of all PDA functions for easy access
117
142
  */
@@ -127,5 +152,8 @@ exports.pda = {
127
152
  getPositionPda,
128
153
  getOrderbookPda,
129
154
  getAltPda,
155
+ getGlobalDepositTokenPda,
156
+ getUserGlobalDepositPda,
157
+ getPositionAltPda,
130
158
  };
131
159
  //# sourceMappingURL=pda.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pda.js","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_ID, ALT_PROGRAM_ID, SEEDS } from \"./constants\";\nimport { toU64Le, toU8 } from \"./utils\";\n\n/**\n * Derive Exchange PDA (singleton central state)\n * Seeds: [\"central_state\"]\n */\nexport function getExchangePda(\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.CENTRAL_STATE)],\n programId\n );\n}\n\n/**\n * Derive Market PDA\n * Seeds: [\"market\", market_id (u64 little-endian)]\n */\nexport function getMarketPda(\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET), toU64Le(marketId)],\n programId\n );\n}\n\n/**\n * Derive Vault PDA (deposit token storage)\n * Seeds: [\"market_deposit_token_account\", deposit_mint, market]\n */\nexport function getVaultPda(\n depositMint: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),\n depositMint.toBuffer(),\n market.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Mint Authority PDA (signs mint/burn operations)\n * Seeds: [\"market_mint_authority\", market]\n */\nexport function getMintAuthorityPda(\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Conditional Mint PDA (per outcome)\n * Seeds: [\"conditional_mint\", market, deposit_mint, outcome_index (u8)]\n */\nexport function getConditionalMintPda(\n market: PublicKey,\n depositMint: PublicKey,\n outcomeIndex: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.CONDITIONAL_MINT),\n market.toBuffer(),\n depositMint.toBuffer(),\n toU8(outcomeIndex),\n ],\n programId\n );\n}\n\n/**\n * Derive all Conditional Mint PDAs for a market\n */\nexport function getAllConditionalMintPdas(\n market: PublicKey,\n depositMint: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number][] {\n const pdas: [PublicKey, number][] = [];\n for (let i = 0; i < numOutcomes; i++) {\n pdas.push(getConditionalMintPda(market, depositMint, i, programId));\n }\n return pdas;\n}\n\n/**\n * Derive Order Status PDA\n * Seeds: [\"order_status\", order_hash (32 bytes)]\n */\nexport function getOrderStatusPda(\n orderHash: Buffer,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n if (orderHash.length !== 32) {\n throw new Error(\"Order hash must be 32 bytes\");\n }\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.ORDER_STATUS), orderHash],\n programId\n );\n}\n\n/**\n * Derive User Nonce PDA\n * Seeds: [\"user_nonce\", user (32 bytes)]\n */\nexport function getUserNoncePda(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.USER_NONCE), user.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Position PDA\n * Seeds: [\"position\", owner (32 bytes), market (32 bytes)]\n */\nexport function getPositionPda(\n owner: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.POSITION), owner.toBuffer(), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Orderbook PDA\n * Seeds: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n */\nexport function getOrderbookPda(\n mintA: PublicKey,\n mintB: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.ORDERBOOK),\n mintA.toBuffer(),\n mintB.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Address Lookup Table PDA\n * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]\n * Program: ALT_PROGRAM_ID\n */\nexport function getAltPda(\n orderbook: PublicKey,\n recentSlot: bigint\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [orderbook.toBuffer(), toU64Le(recentSlot)],\n ALT_PROGRAM_ID\n );\n}\n\n/**\n * Collection of all PDA functions for easy access\n */\nexport const pda = {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getConditionalMintPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n};\n"]}
1
+ {"version":3,"file":"pda.js","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_ID, ALT_PROGRAM_ID, SEEDS } from \"./constants\";\nimport { toU64Le, toU8 } from \"./utils\";\n\n/**\n * Derive Exchange PDA (singleton central state)\n * Seeds: [\"central_state\"]\n */\nexport function getExchangePda(\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.CENTRAL_STATE)],\n programId\n );\n}\n\n/**\n * Derive Market PDA\n * Seeds: [\"market\", market_id (u64 little-endian)]\n */\nexport function getMarketPda(\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET), toU64Le(marketId)],\n programId\n );\n}\n\n/**\n * Derive Vault PDA (deposit token storage)\n * Seeds: [\"market_deposit_token_account\", deposit_mint, market]\n */\nexport function getVaultPda(\n depositMint: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),\n depositMint.toBuffer(),\n market.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Mint Authority PDA (signs mint/burn operations)\n * Seeds: [\"market_mint_authority\", market]\n */\nexport function getMintAuthorityPda(\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Conditional Mint PDA (per outcome)\n * Seeds: [\"conditional_mint\", market, deposit_mint, outcome_index (u8)]\n */\nexport function getConditionalMintPda(\n market: PublicKey,\n depositMint: PublicKey,\n outcomeIndex: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.CONDITIONAL_MINT),\n market.toBuffer(),\n depositMint.toBuffer(),\n toU8(outcomeIndex),\n ],\n programId\n );\n}\n\n/**\n * Derive all Conditional Mint PDAs for a market\n */\nexport function getAllConditionalMintPdas(\n market: PublicKey,\n depositMint: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number][] {\n const pdas: [PublicKey, number][] = [];\n for (let i = 0; i < numOutcomes; i++) {\n pdas.push(getConditionalMintPda(market, depositMint, i, programId));\n }\n return pdas;\n}\n\n/**\n * Derive Order Status PDA\n * Seeds: [\"order_status\", order_hash (32 bytes)]\n */\nexport function getOrderStatusPda(\n orderHash: Buffer,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n if (orderHash.length !== 32) {\n throw new Error(\"Order hash must be 32 bytes\");\n }\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.ORDER_STATUS), orderHash],\n programId\n );\n}\n\n/**\n * Derive User Nonce PDA\n * Seeds: [\"user_nonce\", user (32 bytes)]\n */\nexport function getUserNoncePda(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.USER_NONCE), user.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Position PDA\n * Seeds: [\"position\", owner (32 bytes), market (32 bytes)]\n */\nexport function getPositionPda(\n owner: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.POSITION), owner.toBuffer(), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Orderbook PDA\n * Seeds: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n */\nexport function getOrderbookPda(\n mintA: PublicKey,\n mintB: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.ORDERBOOK),\n mintA.toBuffer(),\n mintB.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Address Lookup Table PDA\n * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]\n * Program: ALT_PROGRAM_ID\n */\nexport function getAltPda(\n orderbook: PublicKey,\n recentSlot: bigint\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [orderbook.toBuffer(), toU64Le(recentSlot)],\n ALT_PROGRAM_ID\n );\n}\n\n/**\n * Derive GlobalDepositToken whitelist PDA.\n * Seeds: [\"global_deposit\", mint]\n */\nexport function getGlobalDepositTokenPda(\n mint: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.GLOBAL_DEPOSIT), mint.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive User Global Deposit PDA.\n * Seeds: [\"global_deposit\", user, mint]\n */\nexport function getUserGlobalDepositPda(\n user: PublicKey,\n mint: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.GLOBAL_DEPOSIT), user.toBuffer(), mint.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive position ALT PDA used by initPositionTokens.\n * Seeds: [position, recent_slot]\n * Program: ALT_PROGRAM_ID\n */\nexport function getPositionAltPda(\n position: PublicKey,\n recentSlot: bigint\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [position.toBuffer(), toU64Le(recentSlot)],\n ALT_PROGRAM_ID\n );\n}\n\n/**\n * Collection of all PDA functions for easy access\n */\nexport const pda = {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getConditionalMintPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n getGlobalDepositTokenPda,\n getUserGlobalDepositPda,\n getPositionAltPda,\n};\n"]}
@@ -90,6 +90,17 @@ export interface Orderbook {
90
90
  lookupTable: PublicKey;
91
91
  bump: number;
92
92
  }
93
+ /**
94
+ * GlobalDepositToken whitelist account.
95
+ * PDA: ["global_deposit", mint]
96
+ * Size: 48 bytes
97
+ */
98
+ export interface GlobalDepositToken {
99
+ discriminator: Buffer;
100
+ mint: PublicKey;
101
+ active: boolean;
102
+ bump: number;
103
+ }
93
104
  /**
94
105
  * Signed order format (225 bytes)
95
106
  * Full order with all fields for submission, cancellation, and hashing
@@ -101,11 +112,15 @@ export interface SignedOrder {
101
112
  baseMint: PublicKey;
102
113
  quoteMint: PublicKey;
103
114
  side: OrderSide;
104
- makerAmount: bigint;
105
- takerAmount: bigint;
115
+ amountIn: bigint;
116
+ amountOut: bigint;
106
117
  expiration: bigint;
107
118
  signature: Buffer;
108
119
  }
120
+ /**
121
+ * Alias matching Rust v2 naming.
122
+ */
123
+ export type OrderPayload = SignedOrder;
109
124
  /**
110
125
  * Compact order format (29 bytes)
111
126
  * Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA)
@@ -113,8 +128,8 @@ export interface SignedOrder {
113
128
  export interface Order {
114
129
  nonce: number;
115
130
  side: OrderSide;
116
- makerAmount: bigint;
117
- takerAmount: bigint;
131
+ amountIn: bigint;
132
+ amountOut: bigint;
118
133
  expiration: bigint;
119
134
  }
120
135
  /**
@@ -144,7 +159,7 @@ export interface OutcomeMetadata {
144
159
  * Parameters for addDepositMint instruction
145
160
  */
146
161
  export interface AddDepositMintParams {
147
- authority: PublicKey;
162
+ payer: PublicKey;
148
163
  marketId: bigint;
149
164
  depositMint: PublicKey;
150
165
  outcomeMetadata: OutcomeMetadata[];
@@ -259,6 +274,54 @@ export interface CreateOrderbookParams {
259
274
  mintB: PublicKey;
260
275
  recentSlot: bigint;
261
276
  }
277
+ /**
278
+ * Parameters for whitelistDepositToken instruction
279
+ */
280
+ export interface WhitelistDepositTokenParams {
281
+ authority: PublicKey;
282
+ mint: PublicKey;
283
+ }
284
+ /**
285
+ * Parameters for depositToGlobal instruction
286
+ */
287
+ export interface DepositToGlobalParams {
288
+ user: PublicKey;
289
+ mint: PublicKey;
290
+ amount: bigint;
291
+ }
292
+ /**
293
+ * Parameters for globalToMarketDeposit instruction
294
+ */
295
+ export interface GlobalToMarketDepositParams {
296
+ user: PublicKey;
297
+ market: PublicKey;
298
+ depositMint: PublicKey;
299
+ amount: bigint;
300
+ }
301
+ /**
302
+ * Parameters for initPositionTokens instruction
303
+ */
304
+ export interface InitPositionTokensParams {
305
+ user: PublicKey;
306
+ market: PublicKey;
307
+ depositMint: PublicKey;
308
+ recentSlot: bigint;
309
+ }
310
+ /**
311
+ * Parameters for depositAndSwap instruction
312
+ */
313
+ export interface DepositAndSwapParams {
314
+ operator: PublicKey;
315
+ market: PublicKey;
316
+ depositMint: PublicKey;
317
+ baseMint: PublicKey;
318
+ quoteMint: PublicKey;
319
+ takerOrder: SignedOrder;
320
+ makerOrders: SignedOrder[];
321
+ makerFillAmounts: bigint[];
322
+ takerFillAmounts: bigint[];
323
+ fullFillBitmask: number;
324
+ }
262
325
  /**
263
326
  * Result from transaction builders
264
327
  */
@@ -360,8 +423,8 @@ export interface BidOrderParams {
360
423
  market: PublicKey;
361
424
  baseMint: PublicKey;
362
425
  quoteMint: PublicKey;
363
- makerAmount: bigint;
364
- takerAmount: bigint;
426
+ amountIn: bigint;
427
+ amountOut: bigint;
365
428
  expiration?: bigint;
366
429
  }
367
430
  /**
@@ -373,8 +436,8 @@ export interface AskOrderParams {
373
436
  market: PublicKey;
374
437
  baseMint: PublicKey;
375
438
  quoteMint: PublicKey;
376
- makerAmount: bigint;
377
- takerAmount: bigint;
439
+ amountIn: bigint;
440
+ amountOut: bigint;
378
441
  expiration?: bigint;
379
442
  }
380
443
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"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"}