@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
@@ -16,6 +16,11 @@ exports.buildActivateMarketIx = buildActivateMarketIx;
16
16
  exports.buildMatchOrdersMultiIx = buildMatchOrdersMultiIx;
17
17
  exports.buildSetAuthorityIx = buildSetAuthorityIx;
18
18
  exports.buildCreateOrderbookIx = buildCreateOrderbookIx;
19
+ exports.buildWhitelistDepositTokenIx = buildWhitelistDepositTokenIx;
20
+ exports.buildDepositToGlobalIx = buildDepositToGlobalIx;
21
+ exports.buildGlobalToMarketDepositIx = buildGlobalToMarketDepositIx;
22
+ exports.buildInitPositionTokensIx = buildInitPositionTokensIx;
23
+ exports.buildDepositAndSwapIx = buildDepositAndSwapIx;
19
24
  const web3_js_1 = require("@solana/web3.js");
20
25
  const constants_1 = require("./constants");
21
26
  const pda_1 = require("./pda");
@@ -131,7 +136,7 @@ function buildAddDepositMintIx(params, market, numOutcomes, programId = constant
131
136
  const [mintAuthority] = (0, pda_1.getMintAuthorityPda)(market, programId);
132
137
  const conditionalMints = (0, pda_1.getAllConditionalMintPdas)(market, params.depositMint, numOutcomes, programId);
133
138
  const keys = [
134
- signerMut(params.authority),
139
+ signerMut(params.payer),
135
140
  writable(market),
136
141
  readonly(params.depositMint),
137
142
  writable(vault),
@@ -546,8 +551,8 @@ function buildMatchOrdersMultiIx(params, programId = constants_1.PROGRAM_ID) {
546
551
  if (params.makerOrders.length === 0) {
547
552
  throw new Error("At least one maker order is required");
548
553
  }
549
- if (params.makerOrders.length > 3) {
550
- throw new Error("Maximum 3 maker orders allowed");
554
+ if (params.makerOrders.length > constants_1.MAX_MAKERS) {
555
+ throw new Error(`Maximum ${constants_1.MAX_MAKERS} maker orders allowed`);
551
556
  }
552
557
  if (params.makerOrders.length !== params.makerFillAmounts.length) {
553
558
  throw new Error("Maker fill amounts must match maker orders count");
@@ -689,4 +694,273 @@ function buildCreateOrderbookIx(params, programId = constants_1.PROGRAM_ID) {
689
694
  data,
690
695
  });
691
696
  }
697
+ /**
698
+ * Build WhitelistDepositToken instruction
699
+ *
700
+ * Accounts:
701
+ * 0. authority (signer, mut)
702
+ * 1. exchange (readonly)
703
+ * 2. mint (readonly)
704
+ * 3. global_deposit_token (mut)
705
+ * 4. system_program (readonly)
706
+ *
707
+ * Data: [discriminator]
708
+ */
709
+ function buildWhitelistDepositTokenIx(params, programId = constants_1.PROGRAM_ID) {
710
+ const [exchange] = (0, pda_1.getExchangePda)(programId);
711
+ const [globalDepositToken] = (0, pda_1.getGlobalDepositTokenPda)(params.mint, programId);
712
+ const keys = [
713
+ signerMut(params.authority),
714
+ readonly(exchange),
715
+ readonly(params.mint),
716
+ writable(globalDepositToken),
717
+ readonly(constants_1.SYSTEM_PROGRAM_ID),
718
+ ];
719
+ return new web3_js_1.TransactionInstruction({
720
+ keys,
721
+ programId,
722
+ data: Buffer.from([constants_1.INSTRUCTION.WHITELIST_DEPOSIT_TOKEN]),
723
+ });
724
+ }
725
+ /**
726
+ * Build DepositToGlobal instruction
727
+ *
728
+ * Accounts:
729
+ * 0. user (signer, mut)
730
+ * 1. global_deposit_token (readonly)
731
+ * 2. mint (readonly)
732
+ * 3. user_global_deposit (mut)
733
+ * 4. user_token_account (mut)
734
+ * 5. token_program (readonly)
735
+ * 6. system_program (readonly)
736
+ *
737
+ * Data: [discriminator, amount (u64)]
738
+ */
739
+ function buildDepositToGlobalIx(params, programId = constants_1.PROGRAM_ID) {
740
+ const [globalDepositToken] = (0, pda_1.getGlobalDepositTokenPda)(params.mint, programId);
741
+ const [userGlobalDeposit] = (0, pda_1.getUserGlobalDepositPda)(params.user, params.mint, programId);
742
+ const userTokenAccount = (0, utils_1.getDepositTokenAta)(params.mint, params.user);
743
+ const keys = [
744
+ signerMut(params.user),
745
+ readonly(globalDepositToken),
746
+ readonly(params.mint),
747
+ writable(userGlobalDeposit),
748
+ writable(userTokenAccount),
749
+ readonly(constants_1.TOKEN_PROGRAM_ID),
750
+ readonly(constants_1.SYSTEM_PROGRAM_ID),
751
+ ];
752
+ const data = Buffer.concat([
753
+ Buffer.from([constants_1.INSTRUCTION.DEPOSIT_TO_GLOBAL]),
754
+ (0, utils_1.toU64Le)(params.amount),
755
+ ]);
756
+ return new web3_js_1.TransactionInstruction({
757
+ keys,
758
+ programId,
759
+ data,
760
+ });
761
+ }
762
+ /**
763
+ * Build GlobalToMarketDeposit instruction
764
+ *
765
+ * Accounts:
766
+ * 0. user (signer, mut)
767
+ * 1. exchange (readonly)
768
+ * 2. market (readonly)
769
+ * 3. deposit_mint (readonly)
770
+ * 4. vault (mut)
771
+ * 5. global_deposit_token (readonly)
772
+ * 6. user_global_deposit (mut)
773
+ * 7. position (mut)
774
+ * 8. position_collateral_ata (mut)
775
+ * 9. mint_authority (readonly)
776
+ * 10. token_program (readonly)
777
+ * 11. token_2022_program (readonly)
778
+ * 12. ata_program (readonly)
779
+ * 13. system_program (readonly)
780
+ * + per outcome: conditional_mint[i] (mut), position_conditional_ata[i] (mut)
781
+ *
782
+ * Data: [discriminator, amount (u64)]
783
+ */
784
+ function buildGlobalToMarketDepositIx(params, numOutcomes, programId = constants_1.PROGRAM_ID) {
785
+ const [exchange] = (0, pda_1.getExchangePda)(programId);
786
+ const [vault] = (0, pda_1.getVaultPda)(params.depositMint, params.market, programId);
787
+ const [globalDepositToken] = (0, pda_1.getGlobalDepositTokenPda)(params.depositMint, programId);
788
+ const [userGlobalDeposit] = (0, pda_1.getUserGlobalDepositPda)(params.user, params.depositMint, programId);
789
+ const [position] = (0, pda_1.getPositionPda)(params.user, params.market, programId);
790
+ const positionCollateralAta = (0, utils_1.getDepositTokenAta)(params.depositMint, position);
791
+ const [mintAuthority] = (0, pda_1.getMintAuthorityPda)(params.market, programId);
792
+ const keys = [
793
+ signerMut(params.user),
794
+ readonly(exchange),
795
+ readonly(params.market),
796
+ readonly(params.depositMint),
797
+ writable(vault),
798
+ readonly(globalDepositToken),
799
+ writable(userGlobalDeposit),
800
+ writable(position),
801
+ writable(positionCollateralAta),
802
+ readonly(mintAuthority),
803
+ readonly(constants_1.TOKEN_PROGRAM_ID),
804
+ readonly(constants_1.TOKEN_2022_PROGRAM_ID),
805
+ readonly(constants_1.ASSOCIATED_TOKEN_PROGRAM_ID),
806
+ readonly(constants_1.SYSTEM_PROGRAM_ID),
807
+ ];
808
+ for (let i = 0; i < numOutcomes; i += 1) {
809
+ const [conditionalMint] = (0, pda_1.getAllConditionalMintPdas)(params.market, params.depositMint, numOutcomes, programId)[i];
810
+ keys.push(writable(conditionalMint));
811
+ keys.push(writable((0, utils_1.getConditionalTokenAta)(conditionalMint, position)));
812
+ }
813
+ const data = Buffer.concat([
814
+ Buffer.from([constants_1.INSTRUCTION.GLOBAL_TO_MARKET_DEPOSIT]),
815
+ (0, utils_1.toU64Le)(params.amount),
816
+ ]);
817
+ return new web3_js_1.TransactionInstruction({
818
+ keys,
819
+ programId,
820
+ data,
821
+ });
822
+ }
823
+ /**
824
+ * Build InitPositionTokens instruction
825
+ *
826
+ * Accounts:
827
+ * 0. user (signer, mut)
828
+ * 1. exchange (readonly)
829
+ * 2. market (readonly)
830
+ * 3. deposit_mint (readonly)
831
+ * 4. vault (readonly)
832
+ * 5. position (mut)
833
+ * 6. lookup_table (mut)
834
+ * 7. mint_authority (readonly)
835
+ * 8. token_2022_program (readonly)
836
+ * 9. ata_program (readonly)
837
+ * 10. alt_program (readonly)
838
+ * 11. system_program (readonly)
839
+ * + per outcome: conditional_mint[i] (readonly), position_conditional_ata[i] (mut)
840
+ *
841
+ * Data: [discriminator, recent_slot (u64)]
842
+ */
843
+ function buildInitPositionTokensIx(params, numOutcomes, programId = constants_1.PROGRAM_ID) {
844
+ const [exchange] = (0, pda_1.getExchangePda)(programId);
845
+ const [vault] = (0, pda_1.getVaultPda)(params.depositMint, params.market, programId);
846
+ const [position] = (0, pda_1.getPositionPda)(params.user, params.market, programId);
847
+ const [lookupTable] = (0, pda_1.getPositionAltPda)(position, params.recentSlot);
848
+ const [mintAuthority] = (0, pda_1.getMintAuthorityPda)(params.market, programId);
849
+ const keys = [
850
+ signerMut(params.user),
851
+ readonly(exchange),
852
+ readonly(params.market),
853
+ readonly(params.depositMint),
854
+ readonly(vault),
855
+ writable(position),
856
+ writable(lookupTable),
857
+ readonly(mintAuthority),
858
+ readonly(constants_1.TOKEN_2022_PROGRAM_ID),
859
+ readonly(constants_1.ASSOCIATED_TOKEN_PROGRAM_ID),
860
+ readonly(constants_1.ALT_PROGRAM_ID),
861
+ readonly(constants_1.SYSTEM_PROGRAM_ID),
862
+ ];
863
+ for (let i = 0; i < numOutcomes; i += 1) {
864
+ const [conditionalMint] = (0, pda_1.getAllConditionalMintPdas)(params.market, params.depositMint, numOutcomes, programId)[i];
865
+ keys.push(readonly(conditionalMint));
866
+ keys.push(writable((0, utils_1.getConditionalTokenAta)(conditionalMint, position)));
867
+ }
868
+ const data = Buffer.concat([
869
+ Buffer.from([constants_1.INSTRUCTION.INIT_POSITION_TOKENS]),
870
+ (0, utils_1.toU64Le)(params.recentSlot),
871
+ ]);
872
+ return new web3_js_1.TransactionInstruction({
873
+ keys,
874
+ programId,
875
+ data,
876
+ });
877
+ }
878
+ /**
879
+ * Build DepositAndSwap instruction.
880
+ * Data format is identical to matchOrdersMulti.
881
+ */
882
+ function buildDepositAndSwapIx(params, numOutcomes, programId = constants_1.PROGRAM_ID) {
883
+ if (params.makerOrders.length === 0) {
884
+ throw new Error("maker_orders is required");
885
+ }
886
+ if (params.makerOrders.length > constants_1.MAX_MAKERS) {
887
+ throw new Error(`Too many makers: ${params.makerOrders.length}`);
888
+ }
889
+ if (params.makerOrders.length !== params.makerFillAmounts.length) {
890
+ throw new Error("maker_fill_amounts length must match maker_orders");
891
+ }
892
+ if (params.makerOrders.length !== params.takerFillAmounts.length) {
893
+ throw new Error("taker_fill_amounts length must match maker_orders");
894
+ }
895
+ const [exchange] = (0, pda_1.getExchangePda)(programId);
896
+ const [vault] = (0, pda_1.getVaultPda)(params.depositMint, params.market, programId);
897
+ const [globalDepositToken] = (0, pda_1.getGlobalDepositTokenPda)(params.depositMint, programId);
898
+ const [mintAuthority] = (0, pda_1.getMintAuthorityPda)(params.market, programId);
899
+ const takerOrderHash = (0, orders_1.hashOrder)(params.takerOrder);
900
+ const [takerNonce] = (0, pda_1.getUserNoncePda)(params.takerOrder.maker, programId);
901
+ const [takerPosition] = (0, pda_1.getPositionPda)(params.takerOrder.maker, params.market, programId);
902
+ const takerFullFill = ((params.fullFillBitmask >> 7) & 1) === 1;
903
+ const keys = [];
904
+ keys.push(signerMut(params.operator));
905
+ keys.push(readonly(exchange));
906
+ keys.push(readonly(params.market));
907
+ keys.push(readonly(params.depositMint));
908
+ keys.push(writable(vault));
909
+ keys.push(readonly(globalDepositToken));
910
+ keys.push(readonly(mintAuthority));
911
+ keys.push(readonly(constants_1.TOKEN_PROGRAM_ID));
912
+ if (!takerFullFill) {
913
+ const [takerOrderStatus] = (0, pda_1.getOrderStatusPda)(takerOrderHash, programId);
914
+ keys.push(writable(takerOrderStatus));
915
+ }
916
+ keys.push(readonly(takerNonce));
917
+ keys.push(writable(takerPosition));
918
+ keys.push(readonly(params.baseMint));
919
+ keys.push(readonly(params.quoteMint));
920
+ keys.push(readonly(constants_1.TOKEN_2022_PROGRAM_ID));
921
+ keys.push(readonly(constants_1.SYSTEM_PROGRAM_ID));
922
+ for (let i = 0; i < numOutcomes; i += 1) {
923
+ const [conditionalMint] = (0, pda_1.getAllConditionalMintPdas)(params.market, params.depositMint, numOutcomes, programId)[i];
924
+ keys.push(writable(conditionalMint));
925
+ keys.push(writable((0, utils_1.getConditionalTokenAta)(conditionalMint, takerPosition)));
926
+ }
927
+ for (let i = 0; i < params.makerOrders.length; i += 1) {
928
+ const makerOrder = params.makerOrders[i];
929
+ const makerFullFill = ((params.fullFillBitmask >> i) & 1) === 1;
930
+ if (!makerFullFill) {
931
+ const makerOrderHash = (0, orders_1.hashOrder)(makerOrder);
932
+ const [makerOrderStatus] = (0, pda_1.getOrderStatusPda)(makerOrderHash, programId);
933
+ keys.push(writable(makerOrderStatus));
934
+ }
935
+ const [makerNonce] = (0, pda_1.getUserNoncePda)(makerOrder.maker, programId);
936
+ const [makerPosition] = (0, pda_1.getPositionPda)(makerOrder.maker, params.market, programId);
937
+ const [makerGlobalDeposit] = (0, pda_1.getUserGlobalDepositPda)(makerOrder.maker, params.depositMint, programId);
938
+ keys.push(readonly(makerNonce));
939
+ keys.push(writable(makerPosition));
940
+ keys.push(writable(makerGlobalDeposit));
941
+ for (let j = 0; j < numOutcomes; j += 1) {
942
+ const [conditionalMint] = (0, pda_1.getAllConditionalMintPdas)(params.market, params.depositMint, numOutcomes, programId)[j];
943
+ keys.push(writable((0, utils_1.getConditionalTokenAta)(conditionalMint, makerPosition)));
944
+ }
945
+ }
946
+ const buffers = [
947
+ Buffer.from([constants_1.INSTRUCTION.DEPOSIT_AND_SWAP]),
948
+ (0, orders_1.serializeOrder)((0, orders_1.signedOrderToOrder)(params.takerOrder)),
949
+ params.takerOrder.signature,
950
+ (0, utils_1.toU8)(params.makerOrders.length),
951
+ (0, utils_1.toU8)(params.fullFillBitmask),
952
+ ];
953
+ for (let i = 0; i < params.makerOrders.length; i += 1) {
954
+ const makerOrder = params.makerOrders[i];
955
+ buffers.push((0, orders_1.serializeOrder)((0, orders_1.signedOrderToOrder)(makerOrder)));
956
+ buffers.push(makerOrder.signature);
957
+ buffers.push((0, utils_1.toU64Le)(params.makerFillAmounts[i]));
958
+ buffers.push((0, utils_1.toU64Le)(params.takerFillAmounts[i]));
959
+ }
960
+ return new web3_js_1.TransactionInstruction({
961
+ keys,
962
+ programId,
963
+ data: Buffer.concat(buffers),
964
+ });
965
+ }
692
966
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/program/instructions.ts"],"names":[],"mappings":";;AAmFA,8CAmBC;AAcD,kDA6BC;AA+BD,sDA8CC;AAuBD,wDAkDC;AAoBD,0DA8CC;AAaD,gDA0BC;AAYD,sDAmBC;AAYD,kDAuBC;AAoBD,sDAyCC;AAWD,4CAmBC;AAWD,gDAmBC;AAgBD,kEAmCC;AAYD,sDAoBC;AAqCD,0DAwGC;AAWD,kDAqBC;AAkBD,wDA8BC;AA33BD,6CAIyB;AACzB,2CAQqB;AAiBrB,+BAWe;AACf,mCAOiB;AACjB,qCAA+F;AAE/F,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,SAAS,CAAC,MAAiB;IAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAiB;IACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAiB;IACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,MAAwB,EACxB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAEnD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,QAAgB,EAChB,YAAuB,sBAAU;IAEjC,IAAA,wBAAgB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;QAChB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,YAAI,EAAC,MAAM,CAAC,WAAW,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QACxB,MAAM,CAAC,UAAU;KAClB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAA2B;IAC3D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,MAAiB,EACjB,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,eAAe,CAAC,MAAM,6BAA6B,WAAW,GAAG,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,EACN,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC;QAChB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC3C,wBAAwB,CAAC,MAAM,CAAC,eAAe,CAAC;KACjD,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,sBAAsB,CACpC,MAA6B,EAC7B,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,qBAAqB,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,qBAAqB,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,uCAA2B,CAAC;QACrC,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,uBAAuB,CACrC,MAA8B,EAC9B,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;KAChC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAChC,KAAgB,EAChB,KAAkB,EAClB,YAAuB,sBAAU;IAEjC,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,KAAK,CAAC,CAAC;IACnC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE9D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,KAAK,CAAC;QAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,YAAY,CAAC,CAAC;QACvC,SAAS;QACT,IAAA,6BAAoB,EAAC,KAAK,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,IAAe,EACf,YAAuB,sBAAU;IAEjC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,qBAAe,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAErD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,IAAI,CAAC;QACf,QAAQ,CAAC,SAAS,CAAC;QACnB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAExD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;KACjB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,YAAI,EAAC,MAAM,CAAC,cAAc,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,cAAsB,EACtB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,+BAAyB,EAC7C,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,cAAc,GAAG,CAAC,EAClB,SAAS,CACV,CAAC,cAAc,CAAC,CAAC;IAClB,MAAM,kBAAkB,GAAG,IAAA,8BAAsB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,kBAAkB,CAAC;QAC5B,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;KAChC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,SAAoB,EACpB,MAAe,EACf,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,UAAU,CAAC,CAAC;QACrC,IAAA,YAAI,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,SAAoB,EACpB,WAAsB,EACtB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,YAAY,CAAC,CAAC;QACvC,WAAW,CAAC,QAAQ,EAAE;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,2BAA2B,CACzC,MAAkC,EAClC,WAAoB,EACpB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,IAAA,8BAAsB,EAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC/C,CAAC,CAAC,IAAA,0BAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,IAAA,8BAAsB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClD,CAAC,CAAC,IAAA,0BAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,iCAAqB,CAAC,CAAC,CAAC,4BAAgB,CAAC;IAE5E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QACrB,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC;QACjB,QAAQ,CAAC,YAAY,CAAC;KACvB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;QACtB,IAAA,YAAI,EAAC,MAAM,CAAC,YAAY,CAAC;KAC1B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;KACjB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAExD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,uBAAuB,CACrC,MAA8B,EAC9B,YAAuB,sBAAU;IAEjC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EACpC,MAAM,CAAC,UAAU,CAAC,KAAK,EACvB,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACxB,CAAC;IAEF,qDAAqD;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iCAAqB,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAAiB,CAAC,CAAC,CAAC;IAEvC,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EACpC,UAAU,CAAC,KAAK,EAChB,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAE9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;IACb,MAAM,YAAY,GAAG,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAa;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAA,uBAAc,EAAC,YAAY,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,SAAS;QAC3B,IAAA,YAAI,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/B,IAAA,YAAI,EAAC,MAAM,CAAC,eAAe,CAAC;KAC7B,CAAC;IAEF,iBAAiB;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC;QAEpD,WAAW,CAAC,IAAI,CAAC,IAAA,uBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;QAC/C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAExC,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAClC,QAAQ,CAAC,QAAQ,CAAC;KACnB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;KAC/B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,sBAAsB,CACpC,MAA6B,EAC7B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,qBAAe,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,eAAS,EAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC;QACnB,QAAQ,CAAC,GAAG,CAAC;QACb,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,0BAAc,CAAC;QACxB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAA,eAAO,EAAC,MAAM,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n AccountMeta,\n} from \"@solana/web3.js\";\nimport {\n PROGRAM_ID,\n INSTRUCTION,\n SYSTEM_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n ALT_PROGRAM_ID,\n} from \"./constants\";\nimport {\n InitializeParams,\n CreateMarketParams,\n AddDepositMintParams,\n MintCompleteSetParams,\n MergeCompleteSetParams,\n SettleMarketParams,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n ActivateMarketParams,\n MatchOrdersMultiParams,\n SetAuthorityParams,\n CreateOrderbookParams,\n SignedOrder,\n OutcomeMetadata,\n} from \"./types\";\nimport {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n} from \"./pda\";\nimport {\n toU8,\n toU64Le,\n serializeString,\n getConditionalTokenAta,\n getDepositTokenAta,\n validateOutcomes,\n} from \"./utils\";\nimport { hashOrder, serializeSignedOrder, serializeOrder, signedOrderToOrder } from \"./orders\";\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\nfunction signerMut(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: true, isWritable: true };\n}\n\nfunction writable(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: true };\n}\n\nfunction readonly(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: false };\n}\n\n// ============================================================================\n// INSTRUCTION BUILDERS\n// ============================================================================\n\n/**\n * Build Initialize instruction\n * Creates the exchange account (singleton)\n *\n * Accounts:\n * 0. authority (signer, mut) - Initial admin\n * 1. exchange (mut) - Exchange PDA\n * 2. system_program (readonly)\n *\n * Data: [discriminator (1 byte)]\n */\nexport function buildInitializeIx(\n params: InitializeParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INITIALIZE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateMarket instruction\n * Creates a new market in Pending status\n *\n * Accounts:\n * 0. authority (signer, mut) - Must be exchange authority\n * 1. exchange (mut) - Exchange PDA\n * 2. market (mut) - Market PDA\n * 3. system_program (readonly)\n *\n * Data: [discriminator, num_outcomes (u8), oracle (32), question_id (32)]\n */\nexport function buildCreateMarketIx(\n params: CreateMarketParams,\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n writable(market),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_MARKET]),\n toU8(params.numOutcomes),\n params.oracle.toBuffer(),\n params.questionId,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Serialize outcome metadata for addDepositMint instruction\n */\nfunction serializeOutcomeMetadata(metadata: OutcomeMetadata[]): Buffer {\n const buffers: Buffer[] = [];\n for (const m of metadata) {\n buffers.push(serializeString(m.name));\n buffers.push(serializeString(m.symbol));\n buffers.push(serializeString(m.uri));\n }\n return Buffer.concat(buffers);\n}\n\n/**\n * Build AddDepositMint instruction\n *\n * Accounts:\n * 0. payer (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. mint_authority\n * 5. token_program (SPL Token)\n * 6. token_2022_program\n * 7. system_program\n * 8+ conditional_mints[0..num_outcomes]\n *\n * Data: [discriminator, ...serialized_metadata]\n */\nexport function buildAddDepositMintIx(\n params: AddDepositMintParams,\n market: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.outcomeMetadata.length !== numOutcomes) {\n throw new Error(\n `Outcome metadata count (${params.outcomeMetadata.length}) must match numOutcomes (${numOutcomes})`\n );\n }\n\n const [vault] = getVaultPda(params.depositMint, market, programId);\n const [mintAuthority] = getMintAuthorityPda(market, programId);\n const conditionalMints = getAllConditionalMintPdas(\n market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(market),\n readonly(params.depositMint),\n writable(vault),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.ADD_DEPOSIT_MINT]),\n serializeOutcomeMetadata(params.outcomeMetadata),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MintCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. user_deposit_ata\n * 6. position\n * 7. position_collateral_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n * 11. associated_token_program\n * 12. system_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMintCompleteSetIx(\n params: MintCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(userDepositAta),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MINT_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MergeCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. position\n * 6. user_deposit_ata\n * 7. mint_authority\n * 8. token_program\n * 9. token_2022_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMergeCompleteSetIx(\n params: MergeCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(position),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MERGE_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CancelOrder instruction\n *\n * Accounts:\n * 0. maker (signer, mut)\n * 1. market (readonly)\n * 2. order_status (mut)\n * 3. system_program (readonly)\n *\n * Data: [discriminator, order_hash (32), signed_order (225)]\n */\nexport function buildCancelOrderIx(\n maker: PublicKey,\n order: SignedOrder,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const orderHash = hashOrder(order);\n const [orderStatus] = getOrderStatusPda(orderHash, programId);\n\n const keys: AccountMeta[] = [\n signerMut(maker),\n readonly(order.market),\n writable(orderStatus),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CANCEL_ORDER]),\n orderHash,\n serializeSignedOrder(order),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build IncrementNonce instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. user_nonce (mut)\n * 2. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildIncrementNonceIx(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [userNonce] = getUserNoncePda(user, programId);\n\n const keys: AccountMeta[] = [\n signerMut(user),\n writable(userNonce),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INCREMENT_NONCE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SettleMarket instruction\n *\n * Accounts:\n * 0. oracle (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator, winning_outcome (u8)]\n */\nexport function buildSettleMarketIx(\n params: SettleMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.oracle),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SETTLE_MARKET]),\n toU8(params.winningOutcome),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build RedeemWinnings instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. winning_conditional_mint\n * 5. position\n * 6. position_conditional_ata\n * 7. user_deposit_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildRedeemWinningsIx(\n params: RedeemWinningsParams,\n winningOutcome: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [winningMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n winningOutcome + 1,\n programId\n )[winningOutcome];\n const positionWinningAta = getConditionalTokenAta(winningMint, position);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(winningMint),\n writable(position),\n writable(positionWinningAta),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.REDEEM_WINNINGS]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetPaused instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, paused (u8)]\n */\nexport function buildSetPausedIx(\n authority: PublicKey,\n paused: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_PAUSED]),\n toU8(paused ? 1 : 0),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetOperator instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_operator (32)]\n */\nexport function buildSetOperatorIx(\n authority: PublicKey,\n newOperator: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_OPERATOR]),\n newOperator.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WithdrawFromPosition instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. market (readonly)\n * 2. position (mut)\n * 3. mint (readonly)\n * 4. position_ata (mut)\n * 5. user_ata (mut)\n * 6. token_program (readonly)\n *\n * Data: [discriminator, amount (u64), outcome_index (u8)]\n */\nexport function buildWithdrawFromPositionIx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionAta = isToken2022\n ? getConditionalTokenAta(params.mint, position)\n : getDepositTokenAta(params.mint, position);\n const userAta = isToken2022\n ? getConditionalTokenAta(params.mint, params.user)\n : getDepositTokenAta(params.mint, params.user);\n const tokenProgram = isToken2022 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n writable(position),\n readonly(params.mint),\n writable(positionAta),\n writable(userAta),\n readonly(tokenProgram),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.WITHDRAW_FROM_POSITION]),\n toU64Le(params.amount),\n toU8(params.outcomeIndex),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ActivateMarket instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator]\n */\nexport function buildActivateMarketIx(\n params: ActivateMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.from([INSTRUCTION.ACTIVATE_MARKET]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MatchOrdersMulti instruction\n *\n * Dynamic accounts based on full_fill_bitmask:\n * 0. operator (signer)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * [taker_order_status if bit7=0] (mut)\n * taker_nonce (readonly)\n * taker_position (mut)\n * base_mint (readonly)\n * quote_mint (readonly)\n * taker_base_ata (mut)\n * taker_quote_ata (mut)\n * token_2022_program (readonly)\n * system_program (readonly)\n * Per maker:\n * [maker_order_status if bit_i=0] (mut)\n * maker_nonce (readonly)\n * maker_position (mut)\n * maker_base_ata (mut)\n * maker_quote_ata (mut)\n *\n * Data:\n * [0] discriminator\n * [1..30] taker Order (29 bytes)\n * [30..94] taker_signature (64 bytes)\n * [94] num_makers\n * [95] full_fill_bitmask\n * Per maker (109 bytes):\n * [+0..+29] maker Order (29)\n * [+29..+93] maker_signature (64)\n * [+93..+101] maker_fill_amount (8)\n * [+101..+109] taker_fill_amount (8)\n */\nexport function buildMatchOrdersMultiIx(\n params: MatchOrdersMultiParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"At least one maker order is required\");\n }\n if (params.makerOrders.length > 3) {\n throw new Error(\"Maximum 3 maker orders allowed\");\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"Maker fill amounts must match maker orders count\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"Taker fill amounts must match maker orders count\");\n }\n\n const [exchange] = getExchangePda(programId);\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(\n params.takerOrder.maker,\n params.market,\n programId\n );\n const takerBaseAta = getConditionalTokenAta(params.baseMint, takerPosition);\n const takerQuoteAta = getConditionalTokenAta(params.quoteMint, takerPosition);\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n ];\n\n // Taker order status if not fully filled (bit 7 = 0)\n const takerFullFill = (params.fullFillBitmask & 0x80) !== 0;\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(takerBaseAta));\n keys.push(writable(takerQuoteAta));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n // Add maker accounts\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = (params.fullFillBitmask & (1 << i)) !== 0;\n\n if (!makerFullFill) {\n const makerOrderHash = hashOrder(makerOrder);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n const [makerNonce] = getUserNoncePda(makerOrder.maker, programId);\n const [makerPosition] = getPositionPda(\n makerOrder.maker,\n params.market,\n programId\n );\n const makerBaseAta = getConditionalTokenAta(params.baseMint, makerPosition);\n const makerQuoteAta = getConditionalTokenAta(params.quoteMint, makerPosition);\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n keys.push(writable(makerBaseAta));\n keys.push(writable(makerQuoteAta));\n }\n\n // Build data\n const takerCompact = signedOrderToOrder(params.takerOrder);\n const dataBuffers: Buffer[] = [\n Buffer.from([INSTRUCTION.MATCH_ORDERS_MULTI]),\n serializeOrder(takerCompact),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n ];\n\n // Add maker data\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerCompact = signedOrderToOrder(makerOrder);\n\n dataBuffers.push(serializeOrder(makerCompact));\n dataBuffers.push(makerOrder.signature);\n dataBuffers.push(toU64Le(params.makerFillAmounts[i]));\n dataBuffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n const data = Buffer.concat(dataBuffers);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetAuthority instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_authority (32)]\n */\nexport function buildSetAuthorityIx(\n params: SetAuthorityParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.currentAuthority),\n writable(exchange),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_AUTHORITY]),\n params.newAuthority.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateOrderbook instruction\n *\n * Accounts:\n * 0. payer (signer, mut)\n * 1. market (readonly)\n * 2. mint_a (readonly)\n * 3. mint_b (readonly)\n * 4. orderbook (mut)\n * 5. lookup_table (mut)\n * 6. exchange (readonly)\n * 7. alt_program (readonly)\n * 8. system_program (readonly)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildCreateOrderbookIx(\n params: CreateOrderbookParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [orderbook] = getOrderbookPda(params.mintA, params.mintB, programId);\n const [alt] = getAltPda(orderbook, params.recentSlot);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.market),\n readonly(params.mintA),\n readonly(params.mintB),\n writable(orderbook),\n writable(alt),\n readonly(exchange),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_ORDERBOOK]),\n toU64Le(params.recentSlot),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n"]}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/program/instructions.ts"],"names":[],"mappings":";;AA4FA,8CAmBC;AAcD,kDA6BC;AA+BD,sDA8CC;AAuBD,wDAkDC;AAoBD,0DA8CC;AAaD,gDA0BC;AAYD,sDAmBC;AAYD,kDAuBC;AAoBD,sDAyCC;AAWD,4CAmBC;AAWD,gDAmBC;AAgBD,kEAmCC;AAYD,sDAoBC;AAqCD,0DAwGC;AAWD,kDAqBC;AAkBD,wDA8BC;AAcD,oEAoBC;AAgBD,wDA4BC;AAwBD,oEAmDC;AAsBD,8DA+CC;AAMD,sDAmHC;AA3tCD,6CAIyB;AACzB,2CASqB;AAsBrB,+BAce;AACf,mCAOiB;AACjB,qCAA+F;AAE/F,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,SAAS,CAAC,MAAiB;IAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAiB;IACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAiB;IACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,MAAwB,EACxB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAEnD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,QAAgB,EAChB,YAAuB,sBAAU;IAEjC,IAAA,wBAAgB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;QAChB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,YAAI,EAAC,MAAM,CAAC,WAAW,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QACxB,MAAM,CAAC,UAAU;KAClB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAA2B;IAC3D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,MAAiB,EACjB,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,eAAe,CAAC,MAAM,6BAA6B,WAAW,GAAG,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,EACN,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC;QAChB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC3C,wBAAwB,CAAC,MAAM,CAAC,eAAe,CAAC;KACjD,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,sBAAsB,CACpC,MAA6B,EAC7B,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,qBAAqB,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,qBAAqB,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,uCAA2B,CAAC;QACrC,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,uBAAuB,CACrC,MAA8B,EAC9B,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,IAAA,+BAAyB,EAChD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;KAChC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAChC,KAAgB,EAChB,KAAkB,EAClB,YAAuB,sBAAU;IAEjC,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,KAAK,CAAC,CAAC;IACnC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE9D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,KAAK,CAAC;QAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,YAAY,CAAC,CAAC;QACvC,SAAS;QACT,IAAA,6BAAoB,EAAC,KAAK,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,IAAe,EACf,YAAuB,sBAAU;IAEjC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,qBAAe,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAErD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,IAAI,CAAC;QACf,QAAQ,CAAC,SAAS,CAAC;QACnB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAExD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;KACjB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,YAAI,EAAC,MAAM,CAAC,cAAc,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,cAAsB,EACtB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,+BAAyB,EAC7C,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,cAAc,GAAG,CAAC,EAClB,SAAS,CACV,CAAC,cAAc,CAAC,CAAC;IAClB,MAAM,kBAAkB,GAAG,IAAA,8BAAsB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,kBAAkB,CAAC;QAC5B,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;KAChC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,SAAoB,EACpB,MAAe,EACf,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,UAAU,CAAC,CAAC;QACrC,IAAA,YAAI,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,SAAoB,EACpB,WAAsB,EACtB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,YAAY,CAAC,CAAC;QACvC,WAAW,CAAC,QAAQ,EAAE;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,2BAA2B,CACzC,MAAkC,EAClC,WAAoB,EACpB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,IAAA,8BAAsB,EAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC/C,CAAC,CAAC,IAAA,0BAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,IAAA,8BAAsB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClD,CAAC,CAAC,IAAA,0BAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,iCAAqB,CAAC,CAAC,CAAC,4BAAgB,CAAC;IAE5E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QACrB,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC;QACjB,QAAQ,CAAC,YAAY,CAAC;KACvB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;QACtB,IAAA,YAAI,EAAC,MAAM,CAAC,YAAY,CAAC;KAC1B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC;KACjB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAExD,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,uBAAuB,CACrC,MAA8B,EAC9B,YAAuB,sBAAU;IAEjC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,sBAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAU,uBAAuB,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EACpC,MAAM,CAAC,UAAU,CAAC,KAAK,EACvB,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACxB,CAAC;IAEF,qDAAqD;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iCAAqB,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAAiB,CAAC,CAAC,CAAC;IAEvC,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EACpC,UAAU,CAAC,KAAK,EAChB,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAE9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;IACb,MAAM,YAAY,GAAG,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAa;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAA,uBAAc,EAAC,YAAY,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,SAAS;QAC3B,IAAA,YAAI,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/B,IAAA,YAAI,EAAC,MAAM,CAAC,eAAe,CAAC;KAC7B,CAAC;IAEF,iBAAiB;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC;QAEpD,WAAW,CAAC,IAAI,CAAC,IAAA,uBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;QAC/C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAExC,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CACjC,MAA0B,EAC1B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAClC,QAAQ,CAAC,QAAQ,CAAC;KACnB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;KAC/B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,sBAAsB,CACpC,MAA6B,EAC7B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,qBAAe,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,eAAS,EAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC;QACnB,QAAQ,CAAC,GAAG,CAAC;QACb,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,0BAAc,CAAC;QACxB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAA,eAAO,EAAC,MAAM,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,4BAA4B,CAC1C,MAAmC,EACnC,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,8BAAwB,EAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QACrB,QAAQ,CAAC,kBAAkB,CAAC;QAC5B,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,uBAAuB,CAAC,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,sBAAsB,CACpC,MAA6B,EAC7B,YAAuB,sBAAU;IAEjC,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,8BAAwB,EAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAA,6BAAuB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzF,MAAM,gBAAgB,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,kBAAkB,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QACrB,QAAQ,CAAC,iBAAiB,CAAC;QAC3B,QAAQ,CAAC,gBAAgB,CAAC;QAC1B,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,4BAA4B,CAC1C,MAAmC,EACnC,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,8BAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAA,6BAAuB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,qBAAqB,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/E,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,kBAAkB,CAAC;QAC5B,QAAQ,CAAC,iBAAiB,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,qBAAqB,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,4BAAgB,CAAC;QAC1B,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,uCAA2B,CAAC;QACrC,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAA,+BAAyB,EACjD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAA,8BAAsB,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,wBAAwB,CAAC,CAAC;QACnD,IAAA,eAAO,EAAC,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,yBAAyB,CACvC,MAAgC,EAChC,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAkB;QAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,aAAa,CAAC;QACvB,QAAQ,CAAC,iCAAqB,CAAC;QAC/B,QAAQ,CAAC,uCAA2B,CAAC;QACrC,QAAQ,CAAC,0BAAc,CAAC;QACxB,QAAQ,CAAC,6BAAiB,CAAC;KAC5B,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAA,+BAAyB,EACjD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAA,8BAAsB,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,oBAAoB,CAAC,CAAC;QAC/C,IAAA,eAAO,EAAC,MAAM,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;IAEH,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,WAAmB,EACnB,YAAuB,sBAAU;IAEjC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,sBAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,8BAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE1F,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,CAAC,CAAC;IAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iCAAqB,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAAiB,CAAC,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAA,+BAAyB,EACjD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAA,8BAAsB,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,uBAAiB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,qBAAe,EAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAA,oBAAc,EAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,6BAAuB,EAClD,UAAU,CAAC,KAAK,EAChB,MAAM,CAAC,WAAW,EAClB,SAAS,CACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAA,+BAAyB,EACjD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,SAAS,CACV,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAA,8BAAsB,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAa;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAA,uBAAc,EAAC,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,SAAS;QAC3B,IAAA,YAAI,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/B,IAAA,YAAI,EAAC,MAAM,CAAC,eAAe,CAAC;KAC7B,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAc,EAAC,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,gCAAsB,CAAC;QAChC,IAAI;QACJ,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n AccountMeta,\n} from \"@solana/web3.js\";\nimport {\n PROGRAM_ID,\n INSTRUCTION,\n SYSTEM_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n ALT_PROGRAM_ID,\n MAX_MAKERS,\n} from \"./constants\";\nimport {\n InitializeParams,\n CreateMarketParams,\n AddDepositMintParams,\n MintCompleteSetParams,\n MergeCompleteSetParams,\n SettleMarketParams,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n ActivateMarketParams,\n MatchOrdersMultiParams,\n SetAuthorityParams,\n CreateOrderbookParams,\n WhitelistDepositTokenParams,\n DepositToGlobalParams,\n GlobalToMarketDepositParams,\n InitPositionTokensParams,\n DepositAndSwapParams,\n SignedOrder,\n OutcomeMetadata,\n} from \"./types\";\nimport {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n getGlobalDepositTokenPda,\n getUserGlobalDepositPda,\n getPositionAltPda,\n} from \"./pda\";\nimport {\n toU8,\n toU64Le,\n serializeString,\n getConditionalTokenAta,\n getDepositTokenAta,\n validateOutcomes,\n} from \"./utils\";\nimport { hashOrder, serializeSignedOrder, serializeOrder, signedOrderToOrder } from \"./orders\";\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\nfunction signerMut(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: true, isWritable: true };\n}\n\nfunction writable(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: true };\n}\n\nfunction readonly(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: false };\n}\n\n// ============================================================================\n// INSTRUCTION BUILDERS\n// ============================================================================\n\n/**\n * Build Initialize instruction\n * Creates the exchange account (singleton)\n *\n * Accounts:\n * 0. authority (signer, mut) - Initial admin\n * 1. exchange (mut) - Exchange PDA\n * 2. system_program (readonly)\n *\n * Data: [discriminator (1 byte)]\n */\nexport function buildInitializeIx(\n params: InitializeParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INITIALIZE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateMarket instruction\n * Creates a new market in Pending status\n *\n * Accounts:\n * 0. authority (signer, mut) - Must be exchange authority\n * 1. exchange (mut) - Exchange PDA\n * 2. market (mut) - Market PDA\n * 3. system_program (readonly)\n *\n * Data: [discriminator, num_outcomes (u8), oracle (32), question_id (32)]\n */\nexport function buildCreateMarketIx(\n params: CreateMarketParams,\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n writable(market),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_MARKET]),\n toU8(params.numOutcomes),\n params.oracle.toBuffer(),\n params.questionId,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Serialize outcome metadata for addDepositMint instruction\n */\nfunction serializeOutcomeMetadata(metadata: OutcomeMetadata[]): Buffer {\n const buffers: Buffer[] = [];\n for (const m of metadata) {\n buffers.push(serializeString(m.name));\n buffers.push(serializeString(m.symbol));\n buffers.push(serializeString(m.uri));\n }\n return Buffer.concat(buffers);\n}\n\n/**\n * Build AddDepositMint instruction\n *\n * Accounts:\n * 0. payer (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. mint_authority\n * 5. token_program (SPL Token)\n * 6. token_2022_program\n * 7. system_program\n * 8+ conditional_mints[0..num_outcomes]\n *\n * Data: [discriminator, ...serialized_metadata]\n */\nexport function buildAddDepositMintIx(\n params: AddDepositMintParams,\n market: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.outcomeMetadata.length !== numOutcomes) {\n throw new Error(\n `Outcome metadata count (${params.outcomeMetadata.length}) must match numOutcomes (${numOutcomes})`\n );\n }\n\n const [vault] = getVaultPda(params.depositMint, market, programId);\n const [mintAuthority] = getMintAuthorityPda(market, programId);\n const conditionalMints = getAllConditionalMintPdas(\n market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n writable(market),\n readonly(params.depositMint),\n writable(vault),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.ADD_DEPOSIT_MINT]),\n serializeOutcomeMetadata(params.outcomeMetadata),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MintCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. user_deposit_ata\n * 6. position\n * 7. position_collateral_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n * 11. associated_token_program\n * 12. system_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMintCompleteSetIx(\n params: MintCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(userDepositAta),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MINT_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MergeCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. position\n * 6. user_deposit_ata\n * 7. mint_authority\n * 8. token_program\n * 9. token_2022_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMergeCompleteSetIx(\n params: MergeCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(position),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MERGE_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CancelOrder instruction\n *\n * Accounts:\n * 0. maker (signer, mut)\n * 1. market (readonly)\n * 2. order_status (mut)\n * 3. system_program (readonly)\n *\n * Data: [discriminator, order_hash (32), signed_order (225)]\n */\nexport function buildCancelOrderIx(\n maker: PublicKey,\n order: SignedOrder,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const orderHash = hashOrder(order);\n const [orderStatus] = getOrderStatusPda(orderHash, programId);\n\n const keys: AccountMeta[] = [\n signerMut(maker),\n readonly(order.market),\n writable(orderStatus),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CANCEL_ORDER]),\n orderHash,\n serializeSignedOrder(order),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build IncrementNonce instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. user_nonce (mut)\n * 2. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildIncrementNonceIx(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [userNonce] = getUserNoncePda(user, programId);\n\n const keys: AccountMeta[] = [\n signerMut(user),\n writable(userNonce),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INCREMENT_NONCE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SettleMarket instruction\n *\n * Accounts:\n * 0. oracle (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator, winning_outcome (u8)]\n */\nexport function buildSettleMarketIx(\n params: SettleMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.oracle),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SETTLE_MARKET]),\n toU8(params.winningOutcome),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build RedeemWinnings instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. winning_conditional_mint\n * 5. position\n * 6. position_conditional_ata\n * 7. user_deposit_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildRedeemWinningsIx(\n params: RedeemWinningsParams,\n winningOutcome: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [winningMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n winningOutcome + 1,\n programId\n )[winningOutcome];\n const positionWinningAta = getConditionalTokenAta(winningMint, position);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(winningMint),\n writable(position),\n writable(positionWinningAta),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.REDEEM_WINNINGS]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetPaused instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, paused (u8)]\n */\nexport function buildSetPausedIx(\n authority: PublicKey,\n paused: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_PAUSED]),\n toU8(paused ? 1 : 0),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetOperator instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_operator (32)]\n */\nexport function buildSetOperatorIx(\n authority: PublicKey,\n newOperator: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_OPERATOR]),\n newOperator.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WithdrawFromPosition instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. market (readonly)\n * 2. position (mut)\n * 3. mint (readonly)\n * 4. position_ata (mut)\n * 5. user_ata (mut)\n * 6. token_program (readonly)\n *\n * Data: [discriminator, amount (u64), outcome_index (u8)]\n */\nexport function buildWithdrawFromPositionIx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionAta = isToken2022\n ? getConditionalTokenAta(params.mint, position)\n : getDepositTokenAta(params.mint, position);\n const userAta = isToken2022\n ? getConditionalTokenAta(params.mint, params.user)\n : getDepositTokenAta(params.mint, params.user);\n const tokenProgram = isToken2022 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n writable(position),\n readonly(params.mint),\n writable(positionAta),\n writable(userAta),\n readonly(tokenProgram),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.WITHDRAW_FROM_POSITION]),\n toU64Le(params.amount),\n toU8(params.outcomeIndex),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ActivateMarket instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator]\n */\nexport function buildActivateMarketIx(\n params: ActivateMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.from([INSTRUCTION.ACTIVATE_MARKET]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MatchOrdersMulti instruction\n *\n * Dynamic accounts based on full_fill_bitmask:\n * 0. operator (signer)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * [taker_order_status if bit7=0] (mut)\n * taker_nonce (readonly)\n * taker_position (mut)\n * base_mint (readonly)\n * quote_mint (readonly)\n * taker_base_ata (mut)\n * taker_quote_ata (mut)\n * token_2022_program (readonly)\n * system_program (readonly)\n * Per maker:\n * [maker_order_status if bit_i=0] (mut)\n * maker_nonce (readonly)\n * maker_position (mut)\n * maker_base_ata (mut)\n * maker_quote_ata (mut)\n *\n * Data:\n * [0] discriminator\n * [1..30] taker Order (29 bytes)\n * [30..94] taker_signature (64 bytes)\n * [94] num_makers\n * [95] full_fill_bitmask\n * Per maker (109 bytes):\n * [+0..+29] maker Order (29)\n * [+29..+93] maker_signature (64)\n * [+93..+101] maker_fill_amount (8)\n * [+101..+109] taker_fill_amount (8)\n */\nexport function buildMatchOrdersMultiIx(\n params: MatchOrdersMultiParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"At least one maker order is required\");\n }\n if (params.makerOrders.length > MAX_MAKERS) {\n throw new Error(`Maximum ${MAX_MAKERS} maker orders allowed`);\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"Maker fill amounts must match maker orders count\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"Taker fill amounts must match maker orders count\");\n }\n\n const [exchange] = getExchangePda(programId);\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(\n params.takerOrder.maker,\n params.market,\n programId\n );\n const takerBaseAta = getConditionalTokenAta(params.baseMint, takerPosition);\n const takerQuoteAta = getConditionalTokenAta(params.quoteMint, takerPosition);\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n ];\n\n // Taker order status if not fully filled (bit 7 = 0)\n const takerFullFill = (params.fullFillBitmask & 0x80) !== 0;\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(takerBaseAta));\n keys.push(writable(takerQuoteAta));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n // Add maker accounts\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = (params.fullFillBitmask & (1 << i)) !== 0;\n\n if (!makerFullFill) {\n const makerOrderHash = hashOrder(makerOrder);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n const [makerNonce] = getUserNoncePda(makerOrder.maker, programId);\n const [makerPosition] = getPositionPda(\n makerOrder.maker,\n params.market,\n programId\n );\n const makerBaseAta = getConditionalTokenAta(params.baseMint, makerPosition);\n const makerQuoteAta = getConditionalTokenAta(params.quoteMint, makerPosition);\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n keys.push(writable(makerBaseAta));\n keys.push(writable(makerQuoteAta));\n }\n\n // Build data\n const takerCompact = signedOrderToOrder(params.takerOrder);\n const dataBuffers: Buffer[] = [\n Buffer.from([INSTRUCTION.MATCH_ORDERS_MULTI]),\n serializeOrder(takerCompact),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n ];\n\n // Add maker data\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerCompact = signedOrderToOrder(makerOrder);\n\n dataBuffers.push(serializeOrder(makerCompact));\n dataBuffers.push(makerOrder.signature);\n dataBuffers.push(toU64Le(params.makerFillAmounts[i]));\n dataBuffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n const data = Buffer.concat(dataBuffers);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetAuthority instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_authority (32)]\n */\nexport function buildSetAuthorityIx(\n params: SetAuthorityParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.currentAuthority),\n writable(exchange),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_AUTHORITY]),\n params.newAuthority.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateOrderbook instruction\n *\n * Accounts:\n * 0. payer (signer, mut)\n * 1. market (readonly)\n * 2. mint_a (readonly)\n * 3. mint_b (readonly)\n * 4. orderbook (mut)\n * 5. lookup_table (mut)\n * 6. exchange (readonly)\n * 7. alt_program (readonly)\n * 8. system_program (readonly)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildCreateOrderbookIx(\n params: CreateOrderbookParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [orderbook] = getOrderbookPda(params.mintA, params.mintB, programId);\n const [alt] = getAltPda(orderbook, params.recentSlot);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.market),\n readonly(params.mintA),\n readonly(params.mintB),\n writable(orderbook),\n writable(alt),\n readonly(exchange),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_ORDERBOOK]),\n toU64Le(params.recentSlot),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WhitelistDepositToken instruction\n *\n * Accounts:\n * 0. authority (signer, mut)\n * 1. exchange (readonly)\n * 2. mint (readonly)\n * 3. global_deposit_token (mut)\n * 4. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildWhitelistDepositTokenIx(\n params: WhitelistDepositTokenParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n readonly(params.mint),\n writable(globalDepositToken),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.from([INSTRUCTION.WHITELIST_DEPOSIT_TOKEN]),\n });\n}\n\n/**\n * Build DepositToGlobal instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. global_deposit_token (readonly)\n * 2. mint (readonly)\n * 3. user_global_deposit (mut)\n * 4. user_token_account (mut)\n * 5. token_program (readonly)\n * 6. system_program (readonly)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildDepositToGlobalIx(\n params: DepositToGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.mint, programId);\n const userTokenAccount = getDepositTokenAta(params.mint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(globalDepositToken),\n readonly(params.mint),\n writable(userGlobalDeposit),\n writable(userTokenAccount),\n readonly(TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.DEPOSIT_TO_GLOBAL]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build GlobalToMarketDeposit instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (mut)\n * 5. global_deposit_token (readonly)\n * 6. user_global_deposit (mut)\n * 7. position (mut)\n * 8. position_collateral_ata (mut)\n * 9. mint_authority (readonly)\n * 10. token_program (readonly)\n * 11. token_2022_program (readonly)\n * 12. ata_program (readonly)\n * 13. system_program (readonly)\n * + per outcome: conditional_mint[i] (mut), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildGlobalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.depositMint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.depositMint, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n readonly(globalDepositToken),\n writable(userGlobalDeposit),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.GLOBAL_TO_MARKET_DEPOSIT]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build InitPositionTokens instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (readonly)\n * 5. position (mut)\n * 6. lookup_table (mut)\n * 7. mint_authority (readonly)\n * 8. token_2022_program (readonly)\n * 9. ata_program (readonly)\n * 10. alt_program (readonly)\n * 11. system_program (readonly)\n * + per outcome: conditional_mint[i] (readonly), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildInitPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [lookupTable] = getPositionAltPda(position, params.recentSlot);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n readonly(vault),\n writable(position),\n writable(lookupTable),\n readonly(mintAuthority),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(readonly(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.INIT_POSITION_TOKENS]),\n toU64Le(params.recentSlot),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build DepositAndSwap instruction.\n * Data format is identical to matchOrdersMulti.\n */\nexport function buildDepositAndSwapIx(\n params: DepositAndSwapParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"maker_orders is required\");\n }\n if (params.makerOrders.length > MAX_MAKERS) {\n throw new Error(`Too many makers: ${params.makerOrders.length}`);\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"maker_fill_amounts length must match maker_orders\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"taker_fill_amounts length must match maker_orders\");\n }\n\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.depositMint, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(params.takerOrder.maker, params.market, programId);\n\n const takerFullFill = ((params.fullFillBitmask >> 7) & 1) === 1;\n const keys: AccountMeta[] = [];\n\n keys.push(signerMut(params.operator));\n keys.push(readonly(exchange));\n keys.push(readonly(params.market));\n keys.push(readonly(params.depositMint));\n keys.push(writable(vault));\n keys.push(readonly(globalDepositToken));\n keys.push(readonly(mintAuthority));\n keys.push(readonly(TOKEN_PROGRAM_ID));\n\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, takerPosition)));\n }\n\n for (let i = 0; i < params.makerOrders.length; i += 1) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = ((params.fullFillBitmask >> i) & 1) === 1;\n\n if (!makerFullFill) {\n const makerOrderHash = hashOrder(makerOrder);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n const [makerNonce] = getUserNoncePda(makerOrder.maker, programId);\n const [makerPosition] = getPositionPda(makerOrder.maker, params.market, programId);\n const [makerGlobalDeposit] = getUserGlobalDepositPda(\n makerOrder.maker,\n params.depositMint,\n programId\n );\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n keys.push(writable(makerGlobalDeposit));\n\n for (let j = 0; j < numOutcomes; j += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[j];\n keys.push(writable(getConditionalTokenAta(conditionalMint, makerPosition)));\n }\n }\n\n const buffers: Buffer[] = [\n Buffer.from([INSTRUCTION.DEPOSIT_AND_SWAP]),\n serializeOrder(signedOrderToOrder(params.takerOrder)),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n ];\n\n for (let i = 0; i < params.makerOrders.length; i += 1) {\n const makerOrder = params.makerOrders[i];\n buffers.push(serializeOrder(signedOrderToOrder(makerOrder)));\n buffers.push(makerOrder.signature);\n buffers.push(toU64Le(params.makerFillAmounts[i]));\n buffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.concat(buffers),\n });\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import { Keypair } from "@solana/web3.js";
2
2
  import { SignedOrder, Order, BidOrderParams, AskOrderParams } from "./types";
3
+ import { deriveConditionId } from "./utils";
3
4
  /**
4
5
  * Hash an order using keccak256
5
6
  * Layout (161 bytes - order without signature):
6
7
  * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
7
- * side (1) || makerAmount (8) || takerAmount (8) || expiration (8)
8
+ * side (1) || amountIn (8) || amountOut (8) || expiration (8)
8
9
  *
9
10
  * @returns 32-byte keccak256 hash
10
11
  */
@@ -42,8 +43,8 @@ export declare function verifyOrderSignature(order: SignedOrder): boolean;
42
43
  * [72..104] baseMint (Pubkey)
43
44
  * [104..136] quoteMint (Pubkey)
44
45
  * [136] side (u8)
45
- * [137..145] makerAmount (u64)
46
- * [145..153] takerAmount (u64)
46
+ * [137..145] amountIn (u64)
47
+ * [145..153] amountOut (u64)
47
48
  * [153..161] expiration (i64)
48
49
  * [161..225] signature (64 bytes)
49
50
  */
@@ -58,8 +59,8 @@ export declare function deserializeSignedOrder(data: Buffer): SignedOrder;
58
59
  * Layout:
59
60
  * [0..4] nonce (u32)
60
61
  * [4] side (u8)
61
- * [5..13] makerAmount (u64)
62
- * [13..21] takerAmount (u64)
62
+ * [5..13] amountIn (u64)
63
+ * [13..21] amountOut (u64)
63
64
  * [21..29] expiration (i64)
64
65
  */
65
66
  export declare function serializeOrder(order: Order): Buffer;
@@ -117,11 +118,21 @@ export declare function deriveOrderbookId(baseToken: string, quoteToken: string)
117
118
  * The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).
118
119
  */
119
120
  export declare function cancelOrderMessage(orderHash: string): Uint8Array;
121
+ /**
122
+ * Build the message bytes for cancelling a trigger order.
123
+ * The message is the trigger order ID as UTF-8 bytes.
124
+ */
125
+ export declare function cancelTriggerOrderMessage(triggerOrderId: string): Uint8Array;
120
126
  /**
121
127
  * Sign a cancel order request.
122
128
  * Returns the signature as a 128-char hex string.
123
129
  */
124
130
  export declare function signCancelOrder(orderHash: string, signer: Keypair): string;
131
+ /**
132
+ * Sign a cancel trigger-order request.
133
+ * Returns the signature as a 128-char hex string.
134
+ */
135
+ export declare function signCancelTriggerOrder(triggerOrderId: string, signer: Keypair): string;
125
136
  /**
126
137
  * Build the message string for cancelling all orders.
127
138
  * Format: "cancel_all:{pubkey}:{timestamp}"
@@ -137,15 +148,22 @@ export declare function signCancelAll(userPubkey: string, timestamp: number, sig
137
148
  */
138
149
  export declare function toSubmitRequest(order: SignedOrder, orderbookId: string): {
139
150
  maker: string;
140
- nonce: string;
151
+ nonce: number;
141
152
  market_pubkey: string;
142
153
  base_token: string;
143
154
  quote_token: string;
144
155
  side: number;
145
- maker_amount: string;
146
- taker_amount: string;
156
+ amount_in: string;
157
+ amount_out: string;
147
158
  expiration: number;
148
159
  signature: string;
149
160
  orderbook_id: string;
150
161
  };
162
+ export declare const is_order_expired: typeof isOrderExpired;
163
+ export declare const orders_can_cross: typeof ordersCanCross;
164
+ export declare const calculate_taker_fill: typeof calculateTakerFill;
165
+ export declare const cancel_order_message: typeof cancelOrderMessage;
166
+ export declare const cancel_trigger_order_message: typeof cancelTriggerOrderMessage;
167
+ export declare const cancel_all_message: typeof cancelAllMessage;
168
+ export declare const derive_condition_id: typeof deriveConditionId;
151
169
  //# sourceMappingURL=orders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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"}