jasper-liquidationhub 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1028) hide show
  1. package/.claude/settings.local.json +29 -0
  2. package/.eslintrc.json +30 -0
  3. package/.gitlab-ci.yml +55 -0
  4. package/.husky/pre-commit +2 -0
  5. package/AGENTS.md +63 -0
  6. package/CLAUDE.md +77 -0
  7. package/Dockerfile +99 -0
  8. package/Dockerfile.manager +61 -0
  9. package/Dockerfile.sync +59 -0
  10. package/Dockerfile.test +104 -0
  11. package/Dockerfile.worker +62 -0
  12. package/README.md +107 -0
  13. package/cli/README.md +138 -0
  14. package/cli/bin/jv.ts +33 -0
  15. package/cli/config/chains.json +104 -0
  16. package/cli/docs/OPENCLAW_GUIDE.md +190 -0
  17. package/cli/docs/USER_GUIDE.md +289 -0
  18. package/cli/jest.config.js +20 -0
  19. package/cli/package-lock.json +6421 -0
  20. package/cli/package.json +54 -0
  21. package/cli/src/client.ts +143 -0
  22. package/cli/src/commands/connect.ts +176 -0
  23. package/cli/src/commands/deposit.ts +463 -0
  24. package/cli/src/commands/init.ts +114 -0
  25. package/cli/src/commands/job.ts +22 -0
  26. package/cli/src/commands/limit-order.ts +56 -0
  27. package/cli/src/commands/order.ts +181 -0
  28. package/cli/src/commands/orders.ts +97 -0
  29. package/cli/src/commands/sl.ts +107 -0
  30. package/cli/src/commands/tp.ts +107 -0
  31. package/cli/src/commands/vault.ts +383 -0
  32. package/cli/src/services/chain-config.ts +151 -0
  33. package/cli/src/services/key-manager.ts +95 -0
  34. package/cli/src/services/order-signer.ts +214 -0
  35. package/cli/src/services/price-service.ts +83 -0
  36. package/cli/src/services/subgraph-client.ts +188 -0
  37. package/cli/src/services/vault-profile.ts +61 -0
  38. package/cli/src/templates/skill-body.ts +238 -0
  39. package/cli/src/types.ts +263 -0
  40. package/cli/src/utils/config.ts +22 -0
  41. package/cli/src/utils/endpoints.ts +15 -0
  42. package/cli/src/utils/output.ts +58 -0
  43. package/cli/tests/client.test.ts +162 -0
  44. package/cli/tests/commands/deposit.test.ts +233 -0
  45. package/cli/tests/commands/init.test.ts +217 -0
  46. package/cli/tests/commands/job.test.ts +56 -0
  47. package/cli/tests/commands/limit-order.test.ts +95 -0
  48. package/cli/tests/commands/order.test.ts +192 -0
  49. package/cli/tests/commands/orders.test.ts +101 -0
  50. package/cli/tests/commands/sl.test.ts +140 -0
  51. package/cli/tests/commands/tp.test.ts +140 -0
  52. package/cli/tests/commands/vault.test.ts +73 -0
  53. package/cli/tsconfig.json +23 -0
  54. package/config/networks.json +315 -0
  55. package/dist/app.d.ts +2 -0
  56. package/dist/app.d.ts.map +1 -0
  57. package/dist/app.js +124 -0
  58. package/dist/app.js.map +1 -0
  59. package/dist/services/dispatcher/duplicate-guard.d.ts +7 -0
  60. package/dist/services/dispatcher/duplicate-guard.d.ts.map +1 -0
  61. package/dist/services/dispatcher/duplicate-guard.js +15 -0
  62. package/dist/services/dispatcher/duplicate-guard.js.map +1 -0
  63. package/dist/services/dispatcher/hedge-option-scanner.d.ts +25 -0
  64. package/dist/services/dispatcher/hedge-option-scanner.d.ts.map +1 -0
  65. package/dist/services/dispatcher/hedge-option-scanner.js +65 -0
  66. package/dist/services/dispatcher/hedge-option-scanner.js.map +1 -0
  67. package/dist/services/dispatcher/hedge-option-task-creator.d.ts +10 -0
  68. package/dist/services/dispatcher/hedge-option-task-creator.d.ts.map +1 -0
  69. package/dist/services/dispatcher/hedge-option-task-creator.js +68 -0
  70. package/dist/services/dispatcher/hedge-option-task-creator.js.map +1 -0
  71. package/dist/services/dispatcher/index.d.ts +13 -0
  72. package/dist/services/dispatcher/index.d.ts.map +1 -0
  73. package/dist/services/dispatcher/index.js +746 -0
  74. package/dist/services/dispatcher/index.js.map +1 -0
  75. package/dist/services/dispatcher/limit-order-scanner.d.ts +153 -0
  76. package/dist/services/dispatcher/limit-order-scanner.d.ts.map +1 -0
  77. package/dist/services/dispatcher/limit-order-scanner.js +823 -0
  78. package/dist/services/dispatcher/limit-order-scanner.js.map +1 -0
  79. package/dist/services/dispatcher/limit-order-task-creator.d.ts +28 -0
  80. package/dist/services/dispatcher/limit-order-task-creator.d.ts.map +1 -0
  81. package/dist/services/dispatcher/limit-order-task-creator.js +131 -0
  82. package/dist/services/dispatcher/limit-order-task-creator.js.map +1 -0
  83. package/dist/services/dispatcher/order-scanner.d.ts +8 -0
  84. package/dist/services/dispatcher/order-scanner.d.ts.map +1 -0
  85. package/dist/services/dispatcher/order-scanner.js +17 -0
  86. package/dist/services/dispatcher/order-scanner.js.map +1 -0
  87. package/dist/services/dispatcher/queue-manager.d.ts +4 -0
  88. package/dist/services/dispatcher/queue-manager.d.ts.map +1 -0
  89. package/dist/services/dispatcher/queue-manager.js +46 -0
  90. package/dist/services/dispatcher/queue-manager.js.map +1 -0
  91. package/dist/services/dispatcher/task-creator.d.ts +8 -0
  92. package/dist/services/dispatcher/task-creator.d.ts.map +1 -0
  93. package/dist/services/dispatcher/task-creator.js +14 -0
  94. package/dist/services/dispatcher/task-creator.js.map +1 -0
  95. package/dist/services/manager/api-server.d.ts +36 -0
  96. package/dist/services/manager/api-server.d.ts.map +1 -0
  97. package/dist/services/manager/api-server.js +304 -0
  98. package/dist/services/manager/api-server.js.map +1 -0
  99. package/dist/services/manager/index.d.ts +4 -0
  100. package/dist/services/manager/index.d.ts.map +1 -0
  101. package/dist/services/manager/index.js +108 -0
  102. package/dist/services/manager/index.js.map +1 -0
  103. package/dist/services/manager/routes/funding-fee.d.ts +6 -0
  104. package/dist/services/manager/routes/funding-fee.d.ts.map +1 -0
  105. package/dist/services/manager/routes/funding-fee.js +730 -0
  106. package/dist/services/manager/routes/funding-fee.js.map +1 -0
  107. package/dist/services/manager/routes/funding-rates.d.ts +5 -0
  108. package/dist/services/manager/routes/funding-rates.d.ts.map +1 -0
  109. package/dist/services/manager/routes/funding-rates.js +360 -0
  110. package/dist/services/manager/routes/funding-rates.js.map +1 -0
  111. package/dist/services/manager/routes/hedge.d.ts +9 -0
  112. package/dist/services/manager/routes/hedge.d.ts.map +1 -0
  113. package/dist/services/manager/routes/hedge.js +383 -0
  114. package/dist/services/manager/routes/hedge.js.map +1 -0
  115. package/dist/services/manager/routes/job-status.d.ts +8 -0
  116. package/dist/services/manager/routes/job-status.d.ts.map +1 -0
  117. package/dist/services/manager/routes/job-status.js +82 -0
  118. package/dist/services/manager/routes/job-status.js.map +1 -0
  119. package/dist/services/manager/routes/job-stream.d.ts +10 -0
  120. package/dist/services/manager/routes/job-stream.d.ts.map +1 -0
  121. package/dist/services/manager/routes/job-stream.js +233 -0
  122. package/dist/services/manager/routes/job-stream.js.map +1 -0
  123. package/dist/services/manager/routes/limit-order.d.ts +8 -0
  124. package/dist/services/manager/routes/limit-order.d.ts.map +1 -0
  125. package/dist/services/manager/routes/limit-order.js +502 -0
  126. package/dist/services/manager/routes/limit-order.js.map +1 -0
  127. package/dist/services/manager/routes/liquidation.d.ts +9 -0
  128. package/dist/services/manager/routes/liquidation.d.ts.map +1 -0
  129. package/dist/services/manager/routes/liquidation.js +454 -0
  130. package/dist/services/manager/routes/liquidation.js.map +1 -0
  131. package/dist/services/manager/routes/order.d.ts +11 -0
  132. package/dist/services/manager/routes/order.d.ts.map +1 -0
  133. package/dist/services/manager/routes/order.js +585 -0
  134. package/dist/services/manager/routes/order.js.map +1 -0
  135. package/dist/services/manager/routes/orders.d.ts +7 -0
  136. package/dist/services/manager/routes/orders.d.ts.map +1 -0
  137. package/dist/services/manager/routes/orders.js +311 -0
  138. package/dist/services/manager/routes/orders.js.map +1 -0
  139. package/dist/services/manager/routes/perps-order-creation.d.ts +10 -0
  140. package/dist/services/manager/routes/perps-order-creation.d.ts.map +1 -0
  141. package/dist/services/manager/routes/perps-order-creation.js +535 -0
  142. package/dist/services/manager/routes/perps-order-creation.js.map +1 -0
  143. package/dist/services/manager/routes/status.d.ts +6 -0
  144. package/dist/services/manager/routes/status.d.ts.map +1 -0
  145. package/dist/services/manager/routes/status.js +231 -0
  146. package/dist/services/manager/routes/status.js.map +1 -0
  147. package/dist/services/manager/routes/vault-init.d.ts +10 -0
  148. package/dist/services/manager/routes/vault-init.d.ts.map +1 -0
  149. package/dist/services/manager/routes/vault-init.js +287 -0
  150. package/dist/services/manager/routes/vault-init.js.map +1 -0
  151. package/dist/services/manager/routes/vault-redeem.d.ts +10 -0
  152. package/dist/services/manager/routes/vault-redeem.d.ts.map +1 -0
  153. package/dist/services/manager/routes/vault-redeem.js +355 -0
  154. package/dist/services/manager/routes/vault-redeem.js.map +1 -0
  155. package/dist/services/manager/service-controller.d.ts +17 -0
  156. package/dist/services/manager/service-controller.d.ts.map +1 -0
  157. package/dist/services/manager/service-controller.js +64 -0
  158. package/dist/services/manager/service-controller.js.map +1 -0
  159. package/dist/services/manager/status-monitor.d.ts +24 -0
  160. package/dist/services/manager/status-monitor.d.ts.map +1 -0
  161. package/dist/services/manager/status-monitor.js +233 -0
  162. package/dist/services/manager/status-monitor.js.map +1 -0
  163. package/dist/services/manager/types/limit-order-types.d.ts +88 -0
  164. package/dist/services/manager/types/limit-order-types.d.ts.map +1 -0
  165. package/dist/services/manager/types/limit-order-types.js +3 -0
  166. package/dist/services/manager/types/limit-order-types.js.map +1 -0
  167. package/dist/services/manager/types/order-types.d.ts +54 -0
  168. package/dist/services/manager/types/order-types.d.ts.map +1 -0
  169. package/dist/services/manager/types/order-types.js +3 -0
  170. package/dist/services/manager/types/order-types.js.map +1 -0
  171. package/dist/services/manager/types/perps-order-types.d.ts +66 -0
  172. package/dist/services/manager/types/perps-order-types.d.ts.map +1 -0
  173. package/dist/services/manager/types/perps-order-types.js +3 -0
  174. package/dist/services/manager/types/perps-order-types.js.map +1 -0
  175. package/dist/services/manager/types/vault-init-types.d.ts +74 -0
  176. package/dist/services/manager/types/vault-init-types.d.ts.map +1 -0
  177. package/dist/services/manager/types/vault-init-types.js +7 -0
  178. package/dist/services/manager/types/vault-init-types.js.map +1 -0
  179. package/dist/services/manager/types/vault-redeem-types.d.ts +112 -0
  180. package/dist/services/manager/types/vault-redeem-types.d.ts.map +1 -0
  181. package/dist/services/manager/types/vault-redeem-types.js +7 -0
  182. package/dist/services/manager/types/vault-redeem-types.js.map +1 -0
  183. package/dist/services/manager/types.d.ts +243 -0
  184. package/dist/services/manager/types.d.ts.map +1 -0
  185. package/dist/services/manager/types.js +3 -0
  186. package/dist/services/manager/types.js.map +1 -0
  187. package/dist/services/sync/blockscholes-price-client.d.ts +67 -0
  188. package/dist/services/sync/blockscholes-price-client.d.ts.map +1 -0
  189. package/dist/services/sync/blockscholes-price-client.js +789 -0
  190. package/dist/services/sync/blockscholes-price-client.js.map +1 -0
  191. package/dist/services/sync/data-synchronizer.d.ts +75 -0
  192. package/dist/services/sync/data-synchronizer.d.ts.map +1 -0
  193. package/dist/services/sync/data-synchronizer.js +855 -0
  194. package/dist/services/sync/data-synchronizer.js.map +1 -0
  195. package/dist/services/sync/funding-fee-task-dispatcher.d.ts +21 -0
  196. package/dist/services/sync/funding-fee-task-dispatcher.d.ts.map +1 -0
  197. package/dist/services/sync/funding-fee-task-dispatcher.js +80 -0
  198. package/dist/services/sync/funding-fee-task-dispatcher.js.map +1 -0
  199. package/dist/services/sync/funding-rate-task-dispatcher.d.ts +20 -0
  200. package/dist/services/sync/funding-rate-task-dispatcher.d.ts.map +1 -0
  201. package/dist/services/sync/funding-rate-task-dispatcher.js +90 -0
  202. package/dist/services/sync/funding-rate-task-dispatcher.js.map +1 -0
  203. package/dist/services/sync/index.d.ts +4 -0
  204. package/dist/services/sync/index.d.ts.map +1 -0
  205. package/dist/services/sync/index.js +254 -0
  206. package/dist/services/sync/index.js.map +1 -0
  207. package/dist/services/sync/liquidation-price-task-dispatcher.d.ts +16 -0
  208. package/dist/services/sync/liquidation-price-task-dispatcher.d.ts.map +1 -0
  209. package/dist/services/sync/liquidation-price-task-dispatcher.js +63 -0
  210. package/dist/services/sync/liquidation-price-task-dispatcher.js.map +1 -0
  211. package/dist/services/sync/order-generator.d.ts +10 -0
  212. package/dist/services/sync/order-generator.d.ts.map +1 -0
  213. package/dist/services/sync/order-generator.js +57 -0
  214. package/dist/services/sync/order-generator.js.map +1 -0
  215. package/dist/services/sync/pyth-client.d.ts +25 -0
  216. package/dist/services/sync/pyth-client.d.ts.map +1 -0
  217. package/dist/services/sync/pyth-client.js +183 -0
  218. package/dist/services/sync/pyth-client.js.map +1 -0
  219. package/dist/services/sync/queries.d.ts +194 -0
  220. package/dist/services/sync/queries.d.ts.map +1 -0
  221. package/dist/services/sync/queries.js +347 -0
  222. package/dist/services/sync/queries.js.map +1 -0
  223. package/dist/services/sync/run-batch-loader.d.ts +19 -0
  224. package/dist/services/sync/run-batch-loader.d.ts.map +1 -0
  225. package/dist/services/sync/run-batch-loader.js +32 -0
  226. package/dist/services/sync/run-batch-loader.js.map +1 -0
  227. package/dist/services/sync/subgraph-client.d.ts +21 -0
  228. package/dist/services/sync/subgraph-client.d.ts.map +1 -0
  229. package/dist/services/sync/subgraph-client.js +214 -0
  230. package/dist/services/sync/subgraph-client.js.map +1 -0
  231. package/dist/services/sync/subgraph-order-generator.d.ts +26 -0
  232. package/dist/services/sync/subgraph-order-generator.d.ts.map +1 -0
  233. package/dist/services/sync/subgraph-order-generator.js +133 -0
  234. package/dist/services/sync/subgraph-order-generator.js.map +1 -0
  235. package/dist/services/sync/websocket-client.d.ts +18 -0
  236. package/dist/services/sync/websocket-client.d.ts.map +1 -0
  237. package/dist/services/sync/websocket-client.js +83 -0
  238. package/dist/services/sync/websocket-client.js.map +1 -0
  239. package/dist/services/worker/contract-client.d.ts +300 -0
  240. package/dist/services/worker/contract-client.d.ts.map +1 -0
  241. package/dist/services/worker/contract-client.js +5704 -0
  242. package/dist/services/worker/contract-client.js.map +1 -0
  243. package/dist/services/worker/funding-fee-processor.d.ts +52 -0
  244. package/dist/services/worker/funding-fee-processor.d.ts.map +1 -0
  245. package/dist/services/worker/funding-fee-processor.js +347 -0
  246. package/dist/services/worker/funding-fee-processor.js.map +1 -0
  247. package/dist/services/worker/funding-fee-provider.d.ts +29 -0
  248. package/dist/services/worker/funding-fee-provider.d.ts.map +1 -0
  249. package/dist/services/worker/funding-fee-provider.js +185 -0
  250. package/dist/services/worker/funding-fee-provider.js.map +1 -0
  251. package/dist/services/worker/funding-fee-update-executor.d.ts +20 -0
  252. package/dist/services/worker/funding-fee-update-executor.d.ts.map +1 -0
  253. package/dist/services/worker/funding-fee-update-executor.js +123 -0
  254. package/dist/services/worker/funding-fee-update-executor.js.map +1 -0
  255. package/dist/services/worker/gas-manager.d.ts +15 -0
  256. package/dist/services/worker/gas-manager.d.ts.map +1 -0
  257. package/dist/services/worker/gas-manager.js +32 -0
  258. package/dist/services/worker/gas-manager.js.map +1 -0
  259. package/dist/services/worker/health-factor-processor.d.ts +20 -0
  260. package/dist/services/worker/health-factor-processor.d.ts.map +1 -0
  261. package/dist/services/worker/health-factor-processor.js +129 -0
  262. package/dist/services/worker/health-factor-processor.js.map +1 -0
  263. package/dist/services/worker/index.d.ts +4 -0
  264. package/dist/services/worker/index.d.ts.map +1 -0
  265. package/dist/services/worker/index.js +190 -0
  266. package/dist/services/worker/index.js.map +1 -0
  267. package/dist/services/worker/liquidation-executor.d.ts +8 -0
  268. package/dist/services/worker/liquidation-executor.d.ts.map +1 -0
  269. package/dist/services/worker/liquidation-executor.js +26 -0
  270. package/dist/services/worker/liquidation-executor.js.map +1 -0
  271. package/dist/services/worker/liquidation-price-encoder.d.ts +43 -0
  272. package/dist/services/worker/liquidation-price-encoder.d.ts.map +1 -0
  273. package/dist/services/worker/liquidation-price-encoder.js +67 -0
  274. package/dist/services/worker/liquidation-price-encoder.js.map +1 -0
  275. package/dist/services/worker/liquidation-price-processor.d.ts +32 -0
  276. package/dist/services/worker/liquidation-price-processor.d.ts.map +1 -0
  277. package/dist/services/worker/liquidation-price-processor.js +291 -0
  278. package/dist/services/worker/liquidation-price-processor.js.map +1 -0
  279. package/dist/services/worker/price-adapter.d.ts +10 -0
  280. package/dist/services/worker/price-adapter.d.ts.map +1 -0
  281. package/dist/services/worker/price-adapter.js +48 -0
  282. package/dist/services/worker/price-adapter.js.map +1 -0
  283. package/dist/services/worker/production-liquidation-executor.d.ts +19 -0
  284. package/dist/services/worker/production-liquidation-executor.d.ts.map +1 -0
  285. package/dist/services/worker/production-liquidation-executor.js +31 -0
  286. package/dist/services/worker/production-liquidation-executor.js.map +1 -0
  287. package/dist/services/worker/pyth-price-service.d.ts +45 -0
  288. package/dist/services/worker/pyth-price-service.d.ts.map +1 -0
  289. package/dist/services/worker/pyth-price-service.js +567 -0
  290. package/dist/services/worker/pyth-price-service.js.map +1 -0
  291. package/dist/services/worker/signature-service.d.ts +19 -0
  292. package/dist/services/worker/signature-service.d.ts.map +1 -0
  293. package/dist/services/worker/signature-service.js +155 -0
  294. package/dist/services/worker/signature-service.js.map +1 -0
  295. package/dist/services/worker/task-consumer.d.ts +24 -0
  296. package/dist/services/worker/task-consumer.d.ts.map +1 -0
  297. package/dist/services/worker/task-consumer.js +2700 -0
  298. package/dist/services/worker/task-consumer.js.map +1 -0
  299. package/dist/services/worker/transaction-builder.d.ts +34 -0
  300. package/dist/services/worker/transaction-builder.d.ts.map +1 -0
  301. package/dist/services/worker/transaction-builder.js +265 -0
  302. package/dist/services/worker/transaction-builder.js.map +1 -0
  303. package/dist/services/worker/transaction-sender.d.ts +105 -0
  304. package/dist/services/worker/transaction-sender.d.ts.map +1 -0
  305. package/dist/services/worker/transaction-sender.js +494 -0
  306. package/dist/services/worker/transaction-sender.js.map +1 -0
  307. package/dist/shared/adapters/contract-liquidation-adapter.d.ts +95 -0
  308. package/dist/shared/adapters/contract-liquidation-adapter.d.ts.map +1 -0
  309. package/dist/shared/adapters/contract-liquidation-adapter.js +233 -0
  310. package/dist/shared/adapters/contract-liquidation-adapter.js.map +1 -0
  311. package/dist/shared/adapters/price/index.d.ts +5 -0
  312. package/dist/shared/adapters/price/index.d.ts.map +1 -0
  313. package/dist/shared/adapters/price/index.js +22 -0
  314. package/dist/shared/adapters/price/index.js.map +1 -0
  315. package/dist/shared/adapters/price/price-adapter-factory.d.ts +45 -0
  316. package/dist/shared/adapters/price/price-adapter-factory.d.ts.map +1 -0
  317. package/dist/shared/adapters/price/price-adapter-factory.js +132 -0
  318. package/dist/shared/adapters/price/price-adapter-factory.js.map +1 -0
  319. package/dist/shared/adapters/price/pyth-price-adapter.d.ts +100 -0
  320. package/dist/shared/adapters/price/pyth-price-adapter.d.ts.map +1 -0
  321. package/dist/shared/adapters/price/pyth-price-adapter.js +472 -0
  322. package/dist/shared/adapters/price/pyth-price-adapter.js.map +1 -0
  323. package/dist/shared/adapters/price/quote-center-price-adapter.d.ts +273 -0
  324. package/dist/shared/adapters/price/quote-center-price-adapter.d.ts.map +1 -0
  325. package/dist/shared/adapters/price/quote-center-price-adapter.js +1379 -0
  326. package/dist/shared/adapters/price/quote-center-price-adapter.js.map +1 -0
  327. package/dist/shared/adapters/price/types.d.ts +168 -0
  328. package/dist/shared/adapters/price/types.d.ts.map +1 -0
  329. package/dist/shared/adapters/price/types.js +3 -0
  330. package/dist/shared/adapters/price/types.js.map +1 -0
  331. package/dist/shared/blockchain/alchemy-bundler-handler.d.ts +35 -0
  332. package/dist/shared/blockchain/alchemy-bundler-handler.d.ts.map +1 -0
  333. package/dist/shared/blockchain/alchemy-bundler-handler.js +377 -0
  334. package/dist/shared/blockchain/alchemy-bundler-handler.js.map +1 -0
  335. package/dist/shared/blockchain/coinbase-bundler-handler.d.ts +37 -0
  336. package/dist/shared/blockchain/coinbase-bundler-handler.d.ts.map +1 -0
  337. package/dist/shared/blockchain/coinbase-bundler-handler.js +645 -0
  338. package/dist/shared/blockchain/coinbase-bundler-handler.js.map +1 -0
  339. package/dist/shared/blockchain/dynamic-gas-manager.d.ts +23 -0
  340. package/dist/shared/blockchain/dynamic-gas-manager.d.ts.map +1 -0
  341. package/dist/shared/blockchain/dynamic-gas-manager.js +161 -0
  342. package/dist/shared/blockchain/dynamic-gas-manager.js.map +1 -0
  343. package/dist/shared/blockchain/eoa-transaction-handler.d.ts +85 -0
  344. package/dist/shared/blockchain/eoa-transaction-handler.d.ts.map +1 -0
  345. package/dist/shared/blockchain/eoa-transaction-handler.js +863 -0
  346. package/dist/shared/blockchain/eoa-transaction-handler.js.map +1 -0
  347. package/dist/shared/blockchain/flashblocks-listener.d.ts +22 -0
  348. package/dist/shared/blockchain/flashblocks-listener.d.ts.map +1 -0
  349. package/dist/shared/blockchain/flashblocks-listener.js +214 -0
  350. package/dist/shared/blockchain/flashblocks-listener.js.map +1 -0
  351. package/dist/shared/blockchain/polling-confirmation.d.ts +33 -0
  352. package/dist/shared/blockchain/polling-confirmation.d.ts.map +1 -0
  353. package/dist/shared/blockchain/polling-confirmation.js +93 -0
  354. package/dist/shared/blockchain/polling-confirmation.js.map +1 -0
  355. package/dist/shared/blockchain/race-confirmation.d.ts +70 -0
  356. package/dist/shared/blockchain/race-confirmation.d.ts.map +1 -0
  357. package/dist/shared/blockchain/race-confirmation.js +197 -0
  358. package/dist/shared/blockchain/race-confirmation.js.map +1 -0
  359. package/dist/shared/blockchain/shared-ws-provider.d.ts +156 -0
  360. package/dist/shared/blockchain/shared-ws-provider.d.ts.map +1 -0
  361. package/dist/shared/blockchain/shared-ws-provider.js +629 -0
  362. package/dist/shared/blockchain/shared-ws-provider.js.map +1 -0
  363. package/dist/shared/blockchain/transaction-handler-factory.d.ts +30 -0
  364. package/dist/shared/blockchain/transaction-handler-factory.d.ts.map +1 -0
  365. package/dist/shared/blockchain/transaction-handler-factory.js +115 -0
  366. package/dist/shared/blockchain/transaction-handler-factory.js.map +1 -0
  367. package/dist/shared/config/development.d.ts +3 -0
  368. package/dist/shared/config/development.d.ts.map +1 -0
  369. package/dist/shared/config/development.js +155 -0
  370. package/dist/shared/config/development.js.map +1 -0
  371. package/dist/shared/config/index.d.ts +7 -0
  372. package/dist/shared/config/index.d.ts.map +1 -0
  373. package/dist/shared/config/index.js +86 -0
  374. package/dist/shared/config/index.js.map +1 -0
  375. package/dist/shared/config/json-config-loader.d.ts +18 -0
  376. package/dist/shared/config/json-config-loader.d.ts.map +1 -0
  377. package/dist/shared/config/json-config-loader.js +149 -0
  378. package/dist/shared/config/json-config-loader.js.map +1 -0
  379. package/dist/shared/config/network-manager.d.ts +87 -0
  380. package/dist/shared/config/network-manager.d.ts.map +1 -0
  381. package/dist/shared/config/network-manager.js +282 -0
  382. package/dist/shared/config/network-manager.js.map +1 -0
  383. package/dist/shared/config/production.d.ts +3 -0
  384. package/dist/shared/config/production.d.ts.map +1 -0
  385. package/dist/shared/config/production.js +156 -0
  386. package/dist/shared/config/production.js.map +1 -0
  387. package/dist/shared/config/staging.d.ts +3 -0
  388. package/dist/shared/config/staging.d.ts.map +1 -0
  389. package/dist/shared/config/staging.js +150 -0
  390. package/dist/shared/config/staging.js.map +1 -0
  391. package/dist/shared/database/bs-price-repository.d.ts +34 -0
  392. package/dist/shared/database/bs-price-repository.d.ts.map +1 -0
  393. package/dist/shared/database/bs-price-repository.js +86 -0
  394. package/dist/shared/database/bs-price-repository.js.map +1 -0
  395. package/dist/shared/database/index.d.ts +3 -0
  396. package/dist/shared/database/index.d.ts.map +1 -0
  397. package/dist/shared/database/index.js +8 -0
  398. package/dist/shared/database/index.js.map +1 -0
  399. package/dist/shared/database/quote-center-client.d.ts +23 -0
  400. package/dist/shared/database/quote-center-client.d.ts.map +1 -0
  401. package/dist/shared/database/quote-center-client.js +75 -0
  402. package/dist/shared/database/quote-center-client.js.map +1 -0
  403. package/dist/shared/interfaces.d.ts +56 -0
  404. package/dist/shared/interfaces.d.ts.map +1 -0
  405. package/dist/shared/interfaces.js +3 -0
  406. package/dist/shared/interfaces.js.map +1 -0
  407. package/dist/shared/leadership/heartbeat-service.d.ts +5 -0
  408. package/dist/shared/leadership/heartbeat-service.d.ts.map +1 -0
  409. package/dist/shared/leadership/heartbeat-service.js +14 -0
  410. package/dist/shared/leadership/heartbeat-service.js.map +1 -0
  411. package/dist/shared/leadership/index.d.ts +5 -0
  412. package/dist/shared/leadership/index.d.ts.map +1 -0
  413. package/dist/shared/leadership/index.js +21 -0
  414. package/dist/shared/leadership/index.js.map +1 -0
  415. package/dist/shared/leadership/instance-id.d.ts +2 -0
  416. package/dist/shared/leadership/instance-id.d.ts.map +1 -0
  417. package/dist/shared/leadership/instance-id.js +16 -0
  418. package/dist/shared/leadership/instance-id.js.map +1 -0
  419. package/dist/shared/leadership/leader-elector.d.ts +26 -0
  420. package/dist/shared/leadership/leader-elector.d.ts.map +1 -0
  421. package/dist/shared/leadership/leader-elector.js +162 -0
  422. package/dist/shared/leadership/leader-elector.js.map +1 -0
  423. package/dist/shared/leadership/types.d.ts +15 -0
  424. package/dist/shared/leadership/types.d.ts.map +1 -0
  425. package/dist/shared/leadership/types.js +3 -0
  426. package/dist/shared/leadership/types.js.map +1 -0
  427. package/dist/shared/queue/index.d.ts +2 -0
  428. package/dist/shared/queue/index.d.ts.map +1 -0
  429. package/dist/shared/queue/index.js +6 -0
  430. package/dist/shared/queue/index.js.map +1 -0
  431. package/dist/shared/queue/task-creator.d.ts +17 -0
  432. package/dist/shared/queue/task-creator.d.ts.map +1 -0
  433. package/dist/shared/queue/task-creator.js +133 -0
  434. package/dist/shared/queue/task-creator.js.map +1 -0
  435. package/dist/shared/redis/client.d.ts +137 -0
  436. package/dist/shared/redis/client.d.ts.map +1 -0
  437. package/dist/shared/redis/client.js +722 -0
  438. package/dist/shared/redis/client.js.map +1 -0
  439. package/dist/shared/redis/funding-fee-repository.d.ts +21 -0
  440. package/dist/shared/redis/funding-fee-repository.d.ts.map +1 -0
  441. package/dist/shared/redis/funding-fee-repository.js +151 -0
  442. package/dist/shared/redis/funding-fee-repository.js.map +1 -0
  443. package/dist/shared/redis/index.d.ts +9 -0
  444. package/dist/shared/redis/index.d.ts.map +1 -0
  445. package/dist/shared/redis/index.js +23 -0
  446. package/dist/shared/redis/index.js.map +1 -0
  447. package/dist/shared/redis/limit-order-repository.d.ts +131 -0
  448. package/dist/shared/redis/limit-order-repository.d.ts.map +1 -0
  449. package/dist/shared/redis/limit-order-repository.js +485 -0
  450. package/dist/shared/redis/limit-order-repository.js.map +1 -0
  451. package/dist/shared/redis/order-repository.d.ts +89 -0
  452. package/dist/shared/redis/order-repository.d.ts.map +1 -0
  453. package/dist/shared/redis/order-repository.js +491 -0
  454. package/dist/shared/redis/order-repository.js.map +1 -0
  455. package/dist/shared/redis/order-staging-repository.d.ts +155 -0
  456. package/dist/shared/redis/order-staging-repository.d.ts.map +1 -0
  457. package/dist/shared/redis/order-staging-repository.js +264 -0
  458. package/dist/shared/redis/order-staging-repository.js.map +1 -0
  459. package/dist/shared/redis/quote-center-redis-client.d.ts +63 -0
  460. package/dist/shared/redis/quote-center-redis-client.d.ts.map +1 -0
  461. package/dist/shared/redis/quote-center-redis-client.js +368 -0
  462. package/dist/shared/redis/quote-center-redis-client.js.map +1 -0
  463. package/dist/shared/redis/redeem-signature-repository.d.ts +100 -0
  464. package/dist/shared/redis/redeem-signature-repository.d.ts.map +1 -0
  465. package/dist/shared/redis/redeem-signature-repository.js +285 -0
  466. package/dist/shared/redis/redeem-signature-repository.js.map +1 -0
  467. package/dist/shared/redis/stuck-task-repository.d.ts +70 -0
  468. package/dist/shared/redis/stuck-task-repository.d.ts.map +1 -0
  469. package/dist/shared/redis/stuck-task-repository.js +94 -0
  470. package/dist/shared/redis/stuck-task-repository.js.map +1 -0
  471. package/dist/shared/redis/task-repository.d.ts +34 -0
  472. package/dist/shared/redis/task-repository.d.ts.map +1 -0
  473. package/dist/shared/redis/task-repository.js +191 -0
  474. package/dist/shared/redis/task-repository.js.map +1 -0
  475. package/dist/shared/schema/index.d.ts +7 -0
  476. package/dist/shared/schema/index.d.ts.map +1 -0
  477. package/dist/shared/schema/index.js +20 -0
  478. package/dist/shared/schema/index.js.map +1 -0
  479. package/dist/shared/services/funding-fee-segment-calculator.d.ts +87 -0
  480. package/dist/shared/services/funding-fee-segment-calculator.d.ts.map +1 -0
  481. package/dist/shared/services/funding-fee-segment-calculator.js +376 -0
  482. package/dist/shared/services/funding-fee-segment-calculator.js.map +1 -0
  483. package/dist/shared/services/hedge-request-validator.d.ts +25 -0
  484. package/dist/shared/services/hedge-request-validator.d.ts.map +1 -0
  485. package/dist/shared/services/hedge-request-validator.js +87 -0
  486. package/dist/shared/services/hedge-request-validator.js.map +1 -0
  487. package/dist/shared/services/hyperliquid-client.d.ts +46 -0
  488. package/dist/shared/services/hyperliquid-client.d.ts.map +1 -0
  489. package/dist/shared/services/hyperliquid-client.js +149 -0
  490. package/dist/shared/services/hyperliquid-client.js.map +1 -0
  491. package/dist/shared/services/job-tracker.d.ts +69 -0
  492. package/dist/shared/services/job-tracker.d.ts.map +1 -0
  493. package/dist/shared/services/job-tracker.js +288 -0
  494. package/dist/shared/services/job-tracker.js.map +1 -0
  495. package/dist/shared/services/limit-order-execution-service.d.ts +161 -0
  496. package/dist/shared/services/limit-order-execution-service.d.ts.map +1 -0
  497. package/dist/shared/services/limit-order-execution-service.js +2477 -0
  498. package/dist/shared/services/limit-order-execution-service.js.map +1 -0
  499. package/dist/shared/services/limit-order-validator.d.ts +49 -0
  500. package/dist/shared/services/limit-order-validator.d.ts.map +1 -0
  501. package/dist/shared/services/limit-order-validator.js +266 -0
  502. package/dist/shared/services/limit-order-validator.js.map +1 -0
  503. package/dist/shared/services/liquidate-request-validator.d.ts +18 -0
  504. package/dist/shared/services/liquidate-request-validator.d.ts.map +1 -0
  505. package/dist/shared/services/liquidate-request-validator.js +323 -0
  506. package/dist/shared/services/liquidate-request-validator.js.map +1 -0
  507. package/dist/shared/services/liquidation-execution-service.d.ts +73 -0
  508. package/dist/shared/services/liquidation-execution-service.d.ts.map +1 -0
  509. package/dist/shared/services/liquidation-execution-service.js +1956 -0
  510. package/dist/shared/services/liquidation-execution-service.js.map +1 -0
  511. package/dist/shared/services/managed-order-builder.d.ts +91 -0
  512. package/dist/shared/services/managed-order-builder.d.ts.map +1 -0
  513. package/dist/shared/services/managed-order-builder.js +530 -0
  514. package/dist/shared/services/managed-order-builder.js.map +1 -0
  515. package/dist/shared/services/nonce-manager.d.ts +85 -0
  516. package/dist/shared/services/nonce-manager.d.ts.map +1 -0
  517. package/dist/shared/services/nonce-manager.js +253 -0
  518. package/dist/shared/services/nonce-manager.js.map +1 -0
  519. package/dist/shared/services/option-pricing.service.d.ts +26 -0
  520. package/dist/shared/services/option-pricing.service.d.ts.map +1 -0
  521. package/dist/shared/services/option-pricing.service.js +209 -0
  522. package/dist/shared/services/option-pricing.service.js.map +1 -0
  523. package/dist/shared/services/order-operation-determiner.d.ts +102 -0
  524. package/dist/shared/services/order-operation-determiner.d.ts.map +1 -0
  525. package/dist/shared/services/order-operation-determiner.js +582 -0
  526. package/dist/shared/services/order-operation-determiner.js.map +1 -0
  527. package/dist/shared/services/order-staging.service.d.ts +128 -0
  528. package/dist/shared/services/order-staging.service.d.ts.map +1 -0
  529. package/dist/shared/services/order-staging.service.js +859 -0
  530. package/dist/shared/services/order-staging.service.js.map +1 -0
  531. package/dist/shared/services/order-validation.service.d.ts +22 -0
  532. package/dist/shared/services/order-validation.service.d.ts.map +1 -0
  533. package/dist/shared/services/order-validation.service.js +118 -0
  534. package/dist/shared/services/order-validation.service.js.map +1 -0
  535. package/dist/shared/services/order-validator.d.ts +61 -0
  536. package/dist/shared/services/order-validator.d.ts.map +1 -0
  537. package/dist/shared/services/order-validator.js +311 -0
  538. package/dist/shared/services/order-validator.js.map +1 -0
  539. package/dist/shared/services/perps-order-execution-service.d.ts +48 -0
  540. package/dist/shared/services/perps-order-execution-service.d.ts.map +1 -0
  541. package/dist/shared/services/perps-order-execution-service.js +922 -0
  542. package/dist/shared/services/perps-order-execution-service.js.map +1 -0
  543. package/dist/shared/services/perps-order-validator.d.ts +22 -0
  544. package/dist/shared/services/perps-order-validator.d.ts.map +1 -0
  545. package/dist/shared/services/perps-order-validator.js +137 -0
  546. package/dist/shared/services/perps-order-validator.js.map +1 -0
  547. package/dist/shared/services/price-resolver.service.d.ts +44 -0
  548. package/dist/shared/services/price-resolver.service.d.ts.map +1 -0
  549. package/dist/shared/services/price-resolver.service.js +140 -0
  550. package/dist/shared/services/price-resolver.service.js.map +1 -0
  551. package/dist/shared/services/pyth-historical-price.service.d.ts +19 -0
  552. package/dist/shared/services/pyth-historical-price.service.d.ts.map +1 -0
  553. package/dist/shared/services/pyth-historical-price.service.js +136 -0
  554. package/dist/shared/services/pyth-historical-price.service.js.map +1 -0
  555. package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.d.ts +84 -0
  556. package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.d.ts.map +1 -0
  557. package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.js +476 -0
  558. package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.js.map +1 -0
  559. package/dist/shared/services/redeem-rules/index.d.ts +4 -0
  560. package/dist/shared/services/redeem-rules/index.d.ts.map +1 -0
  561. package/dist/shared/services/redeem-rules/index.js +20 -0
  562. package/dist/shared/services/redeem-rules/index.js.map +1 -0
  563. package/dist/shared/services/redeem-rules/rule-engine.d.ts +50 -0
  564. package/dist/shared/services/redeem-rules/rule-engine.d.ts.map +1 -0
  565. package/dist/shared/services/redeem-rules/rule-engine.js +178 -0
  566. package/dist/shared/services/redeem-rules/rule-engine.js.map +1 -0
  567. package/dist/shared/services/redeem-rules/types.d.ts +69 -0
  568. package/dist/shared/services/redeem-rules/types.d.ts.map +1 -0
  569. package/dist/shared/services/redeem-rules/types.js +3 -0
  570. package/dist/shared/services/redeem-rules/types.js.map +1 -0
  571. package/dist/shared/services/sse-event-manager.d.ts +77 -0
  572. package/dist/shared/services/sse-event-manager.d.ts.map +1 -0
  573. package/dist/shared/services/sse-event-manager.js +286 -0
  574. package/dist/shared/services/sse-event-manager.js.map +1 -0
  575. package/dist/shared/services/transaction-executor.d.ts +74 -0
  576. package/dist/shared/services/transaction-executor.d.ts.map +1 -0
  577. package/dist/shared/services/transaction-executor.js +190 -0
  578. package/dist/shared/services/transaction-executor.js.map +1 -0
  579. package/dist/shared/services/vault-init.service.d.ts +41 -0
  580. package/dist/shared/services/vault-init.service.d.ts.map +1 -0
  581. package/dist/shared/services/vault-init.service.js +345 -0
  582. package/dist/shared/services/vault-init.service.js.map +1 -0
  583. package/dist/shared/services/vault-redeem.service.d.ts +68 -0
  584. package/dist/shared/services/vault-redeem.service.d.ts.map +1 -0
  585. package/dist/shared/services/vault-redeem.service.js +498 -0
  586. package/dist/shared/services/vault-redeem.service.js.map +1 -0
  587. package/dist/shared/types/blockchain.d.ts +57 -0
  588. package/dist/shared/types/blockchain.d.ts.map +1 -0
  589. package/dist/shared/types/blockchain.js +3 -0
  590. package/dist/shared/types/blockchain.js.map +1 -0
  591. package/dist/shared/types/config.d.ts +186 -0
  592. package/dist/shared/types/config.d.ts.map +1 -0
  593. package/dist/shared/types/config.js +3 -0
  594. package/dist/shared/types/config.js.map +1 -0
  595. package/dist/shared/types/contract.d.ts +165 -0
  596. package/dist/shared/types/contract.d.ts.map +1 -0
  597. package/dist/shared/types/contract.js +14 -0
  598. package/dist/shared/types/contract.js.map +1 -0
  599. package/dist/shared/types/debug.d.ts +57 -0
  600. package/dist/shared/types/debug.d.ts.map +1 -0
  601. package/dist/shared/types/debug.js +3 -0
  602. package/dist/shared/types/debug.js.map +1 -0
  603. package/dist/shared/types/errors.d.ts +64 -0
  604. package/dist/shared/types/errors.d.ts.map +1 -0
  605. package/dist/shared/types/errors.js +176 -0
  606. package/dist/shared/types/errors.js.map +1 -0
  607. package/dist/shared/types/execution-context.d.ts +11 -0
  608. package/dist/shared/types/execution-context.d.ts.map +1 -0
  609. package/dist/shared/types/execution-context.js +3 -0
  610. package/dist/shared/types/execution-context.js.map +1 -0
  611. package/dist/shared/types/funding-fee.d.ts +50 -0
  612. package/dist/shared/types/funding-fee.d.ts.map +1 -0
  613. package/dist/shared/types/funding-fee.js +3 -0
  614. package/dist/shared/types/funding-fee.js.map +1 -0
  615. package/dist/shared/types/hedge-position.d.ts +184 -0
  616. package/dist/shared/types/hedge-position.d.ts.map +1 -0
  617. package/dist/shared/types/hedge-position.js +4 -0
  618. package/dist/shared/types/hedge-position.js.map +1 -0
  619. package/dist/shared/types/index.d.ts +32 -0
  620. package/dist/shared/types/index.d.ts.map +1 -0
  621. package/dist/shared/types/index.js +28 -0
  622. package/dist/shared/types/index.js.map +1 -0
  623. package/dist/shared/types/job.d.ts +55 -0
  624. package/dist/shared/types/job.d.ts.map +1 -0
  625. package/dist/shared/types/job.js +3 -0
  626. package/dist/shared/types/job.js.map +1 -0
  627. package/dist/shared/types/limit-order.d.ts +184 -0
  628. package/dist/shared/types/limit-order.d.ts.map +1 -0
  629. package/dist/shared/types/limit-order.js +55 -0
  630. package/dist/shared/types/limit-order.js.map +1 -0
  631. package/dist/shared/types/liquidation.d.ts +55 -0
  632. package/dist/shared/types/liquidation.d.ts.map +1 -0
  633. package/dist/shared/types/liquidation.js +3 -0
  634. package/dist/shared/types/liquidation.js.map +1 -0
  635. package/dist/shared/types/monitoring.d.ts +123 -0
  636. package/dist/shared/types/monitoring.d.ts.map +1 -0
  637. package/dist/shared/types/monitoring.js +3 -0
  638. package/dist/shared/types/monitoring.js.map +1 -0
  639. package/dist/shared/types/network-config.d.ts +107 -0
  640. package/dist/shared/types/network-config.d.ts.map +1 -0
  641. package/dist/shared/types/network-config.js +3 -0
  642. package/dist/shared/types/network-config.js.map +1 -0
  643. package/dist/shared/types/order.d.ts +47 -0
  644. package/dist/shared/types/order.d.ts.map +1 -0
  645. package/dist/shared/types/order.js +3 -0
  646. package/dist/shared/types/order.js.map +1 -0
  647. package/dist/shared/types/perps-liquidation.d.ts +242 -0
  648. package/dist/shared/types/perps-liquidation.d.ts.map +1 -0
  649. package/dist/shared/types/perps-liquidation.js +3 -0
  650. package/dist/shared/types/perps-liquidation.js.map +1 -0
  651. package/dist/shared/types/perps-order.d.ts +57 -0
  652. package/dist/shared/types/perps-order.d.ts.map +1 -0
  653. package/dist/shared/types/perps-order.js +3 -0
  654. package/dist/shared/types/perps-order.js.map +1 -0
  655. package/dist/shared/types/price.d.ts +45 -0
  656. package/dist/shared/types/price.d.ts.map +1 -0
  657. package/dist/shared/types/price.js +3 -0
  658. package/dist/shared/types/price.js.map +1 -0
  659. package/dist/shared/types/task.d.ts +129 -0
  660. package/dist/shared/types/task.d.ts.map +1 -0
  661. package/dist/shared/types/task.js +69 -0
  662. package/dist/shared/types/task.js.map +1 -0
  663. package/dist/shared/types/transaction-handler.d.ts +72 -0
  664. package/dist/shared/types/transaction-handler.d.ts.map +1 -0
  665. package/dist/shared/types/transaction-handler.js +3 -0
  666. package/dist/shared/types/transaction-handler.js.map +1 -0
  667. package/dist/shared/types/transaction-timing.d.ts +106 -0
  668. package/dist/shared/types/transaction-timing.d.ts.map +1 -0
  669. package/dist/shared/types/transaction-timing.js +3 -0
  670. package/dist/shared/types/transaction-timing.js.map +1 -0
  671. package/dist/shared/utils/effect-retry-policy.d.ts +134 -0
  672. package/dist/shared/utils/effect-retry-policy.d.ts.map +1 -0
  673. package/dist/shared/utils/effect-retry-policy.js +260 -0
  674. package/dist/shared/utils/effect-retry-policy.js.map +1 -0
  675. package/dist/shared/utils/error-classifier.d.ts +45 -0
  676. package/dist/shared/utils/error-classifier.d.ts.map +1 -0
  677. package/dist/shared/utils/error-classifier.js +403 -0
  678. package/dist/shared/utils/error-classifier.js.map +1 -0
  679. package/dist/shared/utils/error-handler.d.ts +47 -0
  680. package/dist/shared/utils/error-handler.d.ts.map +1 -0
  681. package/dist/shared/utils/error-handler.js +221 -0
  682. package/dist/shared/utils/error-handler.js.map +1 -0
  683. package/dist/shared/utils/event-parser-registry.d.ts +265 -0
  684. package/dist/shared/utils/event-parser-registry.d.ts.map +1 -0
  685. package/dist/shared/utils/event-parser-registry.js +894 -0
  686. package/dist/shared/utils/event-parser-registry.js.map +1 -0
  687. package/dist/shared/utils/event-parser-service.d.ts +62 -0
  688. package/dist/shared/utils/event-parser-service.d.ts.map +1 -0
  689. package/dist/shared/utils/event-parser-service.js +187 -0
  690. package/dist/shared/utils/event-parser-service.js.map +1 -0
  691. package/dist/shared/utils/fastify.d.ts +10 -0
  692. package/dist/shared/utils/fastify.d.ts.map +1 -0
  693. package/dist/shared/utils/fastify.js +53 -0
  694. package/dist/shared/utils/fastify.js.map +1 -0
  695. package/dist/shared/utils/flashblocks-mapper.d.ts +32 -0
  696. package/dist/shared/utils/flashblocks-mapper.d.ts.map +1 -0
  697. package/dist/shared/utils/flashblocks-mapper.js +414 -0
  698. package/dist/shared/utils/flashblocks-mapper.js.map +1 -0
  699. package/dist/shared/utils/funding-fee-calculator.d.ts +34 -0
  700. package/dist/shared/utils/funding-fee-calculator.d.ts.map +1 -0
  701. package/dist/shared/utils/funding-fee-calculator.js +121 -0
  702. package/dist/shared/utils/funding-fee-calculator.js.map +1 -0
  703. package/dist/shared/utils/health-calculator.d.ts +102 -0
  704. package/dist/shared/utils/health-calculator.d.ts.map +1 -0
  705. package/dist/shared/utils/health-calculator.js +341 -0
  706. package/dist/shared/utils/health-calculator.js.map +1 -0
  707. package/dist/shared/utils/hedge-parameter-converter.d.ts +41 -0
  708. package/dist/shared/utils/hedge-parameter-converter.d.ts.map +1 -0
  709. package/dist/shared/utils/hedge-parameter-converter.js +168 -0
  710. package/dist/shared/utils/hedge-parameter-converter.js.map +1 -0
  711. package/dist/shared/utils/index.d.ts +7 -0
  712. package/dist/shared/utils/index.d.ts.map +1 -0
  713. package/dist/shared/utils/index.js +29 -0
  714. package/dist/shared/utils/index.js.map +1 -0
  715. package/dist/shared/utils/logger.d.ts +57 -0
  716. package/dist/shared/utils/logger.d.ts.map +1 -0
  717. package/dist/shared/utils/logger.js +462 -0
  718. package/dist/shared/utils/logger.js.map +1 -0
  719. package/dist/shared/utils/price-bundle-helper.d.ts +60 -0
  720. package/dist/shared/utils/price-bundle-helper.d.ts.map +1 -0
  721. package/dist/shared/utils/price-bundle-helper.js +213 -0
  722. package/dist/shared/utils/price-bundle-helper.js.map +1 -0
  723. package/dist/shared/utils/pyth-price-normalizer.d.ts +18 -0
  724. package/dist/shared/utils/pyth-price-normalizer.d.ts.map +1 -0
  725. package/dist/shared/utils/pyth-price-normalizer.js +30 -0
  726. package/dist/shared/utils/pyth-price-normalizer.js.map +1 -0
  727. package/dist/shared/utils/status-reporter.d.ts +29 -0
  728. package/dist/shared/utils/status-reporter.d.ts.map +1 -0
  729. package/dist/shared/utils/status-reporter.js +168 -0
  730. package/dist/shared/utils/status-reporter.js.map +1 -0
  731. package/dist/shared/utils/structured-logger.d.ts +733 -0
  732. package/dist/shared/utils/structured-logger.d.ts.map +1 -0
  733. package/dist/shared/utils/structured-logger.js +1538 -0
  734. package/dist/shared/utils/structured-logger.js.map +1 -0
  735. package/dist/shared/utils/version.d.ts +2 -0
  736. package/dist/shared/utils/version.d.ts.map +1 -0
  737. package/dist/shared/utils/version.js +22 -0
  738. package/dist/shared/utils/version.js.map +1 -0
  739. package/dist/shared/utils/writer-config-matcher.d.ts +9 -0
  740. package/dist/shared/utils/writer-config-matcher.d.ts.map +1 -0
  741. package/dist/shared/utils/writer-config-matcher.js +62 -0
  742. package/dist/shared/utils/writer-config-matcher.js.map +1 -0
  743. package/docs/API_ORDER_CREATE.md +1032 -0
  744. package/docs/API_REDEEM_QUOTA.md +201 -0
  745. package/docs/API_VAULT_INIT.md +452 -0
  746. package/docs/API_VAULT_REDEEM.md +449 -0
  747. package/docs/CONTRACT_AUDIT_FLOW.md +512 -0
  748. package/docs/ERROR_HANDLING_AND_RETRY_FLOW.md +458 -0
  749. package/docs/FRONTEND_AI_PPO_OTM_BRIEF.md +122 -0
  750. package/docs/FRONTEND_ERROR_CODES.md +90 -0
  751. package/docs/FUNDING_FEE_API_REVIEW.md +86 -0
  752. package/docs/MONITORING_SYSTEM.md +502 -0
  753. package/docs/MONITORING_TROUBLESHOOTING.md +316 -0
  754. package/docs/ORDER_API_FLOW.md +972 -0
  755. package/docs/ORDER_EXECUTION_MAPPING.md +509 -0
  756. package/docs/Order_SSE_INTEGRATION.md +788 -0
  757. package/docs/api-server-integration.md +699 -0
  758. package/docs/architecture.md +1093 -0
  759. package/docs/dispatcher-clearing-steps.md +80 -0
  760. package/docs/flashblocks-event-implementation.md +196 -0
  761. package/docs/funding-fee-calculation.md +268 -0
  762. package/docs/health-factor-calculation.md +152 -0
  763. package/docs/manager-api-examples.md +3112 -0
  764. package/docs/perps-order-flow.md +586 -0
  765. package/docs/plans/2025-03-01-skill-cli-requirements.md +130 -0
  766. package/docs/plans/2026-02-03-test-infrastructure-refactor.md +1945 -0
  767. package/docs/price-reading-flow.md +176 -0
  768. package/docs/requirements.md +326 -0
  769. package/docs/sync-service-steps.md +72 -0
  770. package/docs/testing-guide.md +585 -0
  771. package/docs/worker-execution-steps.md +71 -0
  772. package/env.sample +191 -0
  773. package/fly.toml +23 -0
  774. package/fly_dispatcher.toml +20 -0
  775. package/fly_jasper_dev.toml +34 -0
  776. package/fly_manager.toml +32 -0
  777. package/fly_sync.toml +17 -0
  778. package/fly_worker.toml +17 -0
  779. package/jest.config.js +27 -0
  780. package/package.json +99 -0
  781. package/playwright/README.md +129 -0
  782. package/playwright/scenario-1-system-overall-health.js +32 -0
  783. package/playwright/scenario-2-sync-health.js +30 -0
  784. package/playwright/scenario-3-dispatcher-health.js +30 -0
  785. package/playwright/scenario-4-worker-health.js +21 -0
  786. package/playwright/scenario-5-manager-health.js +32 -0
  787. package/playwright/scenario-6-worker-performance.js +35 -0
  788. package/playwright/scenario-7-sync-performance.js +32 -0
  789. package/playwright/scenario-8-dispatcher-performance.js +32 -0
  790. package/scripts/analyze-queue-backlog.ts +108 -0
  791. package/scripts/check-bullmq-status.ts +89 -0
  792. package/scripts/check-failed-tasks.ts +91 -0
  793. package/scripts/check-funding-rate-tasks.ts +62 -0
  794. package/scripts/check-liqprice-performance-stats.ts +101 -0
  795. package/scripts/check-queue-status.ts +65 -0
  796. package/scripts/cleanup-dirty-limit-orders.ts +212 -0
  797. package/scripts/cleanup-orphaned-timestamps.ts +65 -0
  798. package/scripts/clear-queue.ts +136 -0
  799. package/scripts/debug-limit-order-operation.ts +369 -0
  800. package/scripts/debug-redeem-transfer-query.ts +345 -0
  801. package/scripts/debug-writer-config.ts +157 -0
  802. package/scripts/liquidate-hedge-option-now.ts +425 -0
  803. package/scripts/liquidate-now.ts +517 -0
  804. package/scripts/monitor-sse-connection.ts +155 -0
  805. package/scripts/multicall-liquidation-price-benchmark.ts +759 -0
  806. package/scripts/redis-backup.ts +80 -0
  807. package/scripts/redis-resync-and-print-hf.ts +280 -0
  808. package/scripts/redis-resync-and-print-liquidation.ts +275 -0
  809. package/scripts/sync-funding-fees.ts +385 -0
  810. package/scripts/test-batch-price-fetch.ts +109 -0
  811. package/scripts/test-dispatcher-flow.ts +611 -0
  812. package/scripts/test-dispatcher-hedge-scan.ts +450 -0
  813. package/scripts/test-flashblocks-mapper.ts +144 -0
  814. package/scripts/test-funding-fee-flow.ts +166 -0
  815. package/scripts/test-funding-rate-dispatch.ts +74 -0
  816. package/scripts/test-gas-fee-comparison.ts +113 -0
  817. package/scripts/test-get-liquidate-request.ts +146 -0
  818. package/scripts/test-hedge-add-size.ts +228 -0
  819. package/scripts/test-hedge-close-size.ts +257 -0
  820. package/scripts/test-hedge-option-flow.ts +79 -0
  821. package/scripts/test-hedge-option-liquidation.ts +300 -0
  822. package/scripts/test-hedge-worker-execution.ts +75 -0
  823. package/scripts/test-hf-update-dispatch.ts +132 -0
  824. package/scripts/test-limit-order-execute.ts +1121 -0
  825. package/scripts/test-liquidation-price-update.ts +142 -0
  826. package/scripts/test-nonce-query.ts +143 -0
  827. package/scripts/test-option-quote.ts +261 -0
  828. package/scripts/test-quote-center-price.ts +152 -0
  829. package/scripts/test-revert-reason-extraction.ts +205 -0
  830. package/scripts/test-rpc-rw.ts +946 -0
  831. package/scripts/test-simplified-liquidation-price.ts +270 -0
  832. package/scripts/test-user-liquidation.ts +521 -0
  833. package/scripts/test-websocket-rpc.ts +480 -0
  834. package/scripts/test-ws-rpc-rw.ts +1208 -0
  835. package/scripts/test-ws-send-quick.ts +149 -0
  836. package/scripts/verify-funding-rates.ts +65 -0
  837. package/scripts/verify-limit-type-update.ts +95 -0
  838. package/scripts/view-all-orders.ts +779 -0
  839. package/skills/jasper-vault-cli/SKILL.md +205 -0
  840. package/src/app.ts +101 -0
  841. package/src/services/dispatcher/duplicate-guard.ts +12 -0
  842. package/src/services/dispatcher/hedge-option-scanner.ts +87 -0
  843. package/src/services/dispatcher/hedge-option-task-creator.ts +75 -0
  844. package/src/services/dispatcher/index.ts +869 -0
  845. package/src/services/dispatcher/limit-order-scanner.ts +993 -0
  846. package/src/services/dispatcher/limit-order-task-creator.ts +158 -0
  847. package/src/services/dispatcher/order-scanner.ts +15 -0
  848. package/src/services/dispatcher/queue-manager.ts +48 -0
  849. package/src/services/dispatcher/task-creator.ts +15 -0
  850. package/src/services/manager/api-server.ts +350 -0
  851. package/src/services/manager/index.ts +121 -0
  852. package/src/services/manager/routes/funding-fee.ts +857 -0
  853. package/src/services/manager/routes/funding-rates.ts +431 -0
  854. package/src/services/manager/routes/hedge.ts +455 -0
  855. package/src/services/manager/routes/job-status.ts +104 -0
  856. package/src/services/manager/routes/job-stream.ts +274 -0
  857. package/src/services/manager/routes/limit-order.ts +603 -0
  858. package/src/services/manager/routes/liquidation.ts +529 -0
  859. package/src/services/manager/routes/order.ts +741 -0
  860. package/src/services/manager/routes/orders.ts +412 -0
  861. package/src/services/manager/routes/perps-order-creation.ts +641 -0
  862. package/src/services/manager/routes/status.ts +254 -0
  863. package/src/services/manager/routes/vault-init.ts +359 -0
  864. package/src/services/manager/routes/vault-redeem.ts +453 -0
  865. package/src/services/manager/service-controller.ts +77 -0
  866. package/src/services/manager/status-monitor.ts +259 -0
  867. package/src/services/manager/types/limit-order-types.ts +96 -0
  868. package/src/services/manager/types/order-types.ts +61 -0
  869. package/src/services/manager/types/perps-order-types.ts +77 -0
  870. package/src/services/manager/types/vault-init-types.ts +81 -0
  871. package/src/services/manager/types/vault-redeem-types.ts +124 -0
  872. package/src/services/manager/types.ts +270 -0
  873. package/src/services/sync/blockscholes-price-client.ts +880 -0
  874. package/src/services/sync/data-synchronizer.ts +969 -0
  875. package/src/services/sync/funding-fee-task-dispatcher.ts +94 -0
  876. package/src/services/sync/funding-rate-task-dispatcher.ts +117 -0
  877. package/src/services/sync/index.ts +290 -0
  878. package/src/services/sync/liquidation-price-task-dispatcher.ts +73 -0
  879. package/src/services/sync/order-generator.ts +69 -0
  880. package/src/services/sync/pyth-client.ts +215 -0
  881. package/src/services/sync/queries.ts +522 -0
  882. package/src/services/sync/run-batch-loader.ts +39 -0
  883. package/src/services/sync/subgraph-client.ts +238 -0
  884. package/src/services/sync/subgraph-order-generator.ts +148 -0
  885. package/src/services/sync/websocket-client.ts +88 -0
  886. package/src/services/worker/contract-client.ts +6922 -0
  887. package/src/services/worker/funding-fee-processor.ts +401 -0
  888. package/src/services/worker/funding-fee-provider.ts +242 -0
  889. package/src/services/worker/funding-fee-update-executor.ts +153 -0
  890. package/src/services/worker/gas-manager.ts +43 -0
  891. package/src/services/worker/health-factor-processor.ts +172 -0
  892. package/src/services/worker/index.ts +288 -0
  893. package/src/services/worker/liquidation-executor.ts +29 -0
  894. package/src/services/worker/liquidation-price-encoder.ts +110 -0
  895. package/src/services/worker/liquidation-price-processor.ts +353 -0
  896. package/src/services/worker/price-adapter.ts +52 -0
  897. package/src/services/worker/production-liquidation-executor.ts +59 -0
  898. package/src/services/worker/pyth-price-service.ts +678 -0
  899. package/src/services/worker/signature-service.ts +196 -0
  900. package/src/services/worker/task-consumer.ts +3181 -0
  901. package/src/services/worker/transaction-builder.ts +359 -0
  902. package/src/services/worker/transaction-sender.ts +632 -0
  903. package/src/shared/adapters/contract-liquidation-adapter.ts +304 -0
  904. package/src/shared/adapters/price/index.ts +6 -0
  905. package/src/shared/adapters/price/price-adapter-factory.ts +170 -0
  906. package/src/shared/adapters/price/pyth-price-adapter.ts +607 -0
  907. package/src/shared/adapters/price/quote-center-price-adapter.ts +1682 -0
  908. package/src/shared/adapters/price/types.ts +197 -0
  909. package/src/shared/blockchain/alchemy-bundler-handler.ts +473 -0
  910. package/src/shared/blockchain/coinbase-bundler-handler.ts +799 -0
  911. package/src/shared/blockchain/dynamic-gas-manager.ts +195 -0
  912. package/src/shared/blockchain/eoa-transaction-handler.ts +1040 -0
  913. package/src/shared/blockchain/flashblocks-listener.ts +262 -0
  914. package/src/shared/blockchain/polling-confirmation.ts +122 -0
  915. package/src/shared/blockchain/race-confirmation.ts +268 -0
  916. package/src/shared/blockchain/shared-ws-provider.ts +766 -0
  917. package/src/shared/blockchain/transaction-handler-factory.ts +142 -0
  918. package/src/shared/config/development.ts +154 -0
  919. package/src/shared/config/index.ts +79 -0
  920. package/src/shared/config/json-config-loader.ts +140 -0
  921. package/src/shared/config/network-manager.ts +343 -0
  922. package/src/shared/config/production.ts +155 -0
  923. package/src/shared/config/staging.ts +149 -0
  924. package/src/shared/database/bs-price-repository.ts +98 -0
  925. package/src/shared/database/index.ts +3 -0
  926. package/src/shared/database/quote-center-client.ts +88 -0
  927. package/src/shared/interfaces.ts +63 -0
  928. package/src/shared/leadership/heartbeat-service.ts +20 -0
  929. package/src/shared/leadership/index.ts +5 -0
  930. package/src/shared/leadership/instance-id.ts +10 -0
  931. package/src/shared/leadership/leader-elector.ts +180 -0
  932. package/src/shared/leadership/types.ts +18 -0
  933. package/src/shared/queue/index.ts +1 -0
  934. package/src/shared/queue/task-creator.ts +162 -0
  935. package/src/shared/redis/client.ts +836 -0
  936. package/src/shared/redis/funding-fee-repository.ts +183 -0
  937. package/src/shared/redis/index.ts +18 -0
  938. package/src/shared/redis/limit-order-repository.ts +596 -0
  939. package/src/shared/redis/order-repository.ts +611 -0
  940. package/src/shared/redis/order-staging-repository.ts +374 -0
  941. package/src/shared/redis/quote-center-redis-client.ts +439 -0
  942. package/src/shared/redis/redeem-signature-repository.ts +351 -0
  943. package/src/shared/redis/stuck-task-repository.ts +113 -0
  944. package/src/shared/redis/task-repository.ts +223 -0
  945. package/src/shared/schema/index.ts +24 -0
  946. package/src/shared/services/funding-fee-segment-calculator.ts +456 -0
  947. package/src/shared/services/hedge-request-validator.ts +102 -0
  948. package/src/shared/services/hyperliquid-client.ts +183 -0
  949. package/src/shared/services/job-tracker.ts +344 -0
  950. package/src/shared/services/limit-order-execution-service.ts +3149 -0
  951. package/src/shared/services/limit-order-validator.ts +308 -0
  952. package/src/shared/services/liquidate-request-validator.ts +399 -0
  953. package/src/shared/services/liquidation-execution-service.ts +2304 -0
  954. package/src/shared/services/managed-order-builder.ts +646 -0
  955. package/src/shared/services/nonce-manager.ts +280 -0
  956. package/src/shared/services/option-pricing.service.ts +282 -0
  957. package/src/shared/services/order-operation-determiner.ts +681 -0
  958. package/src/shared/services/order-staging.service.ts +1123 -0
  959. package/src/shared/services/order-validation.service.ts +150 -0
  960. package/src/shared/services/order-validator.ts +350 -0
  961. package/src/shared/services/perps-order-execution-service.ts +1105 -0
  962. package/src/shared/services/perps-order-validator.ts +175 -0
  963. package/src/shared/services/price-resolver.service.ts +160 -0
  964. package/src/shared/services/pyth-historical-price.service.ts +189 -0
  965. package/src/shared/services/redeem-rules/daily-withdraw-limit-rule.ts +625 -0
  966. package/src/shared/services/redeem-rules/index.ts +4 -0
  967. package/src/shared/services/redeem-rules/rule-engine.ts +192 -0
  968. package/src/shared/services/redeem-rules/types.ts +76 -0
  969. package/src/shared/services/sse-event-manager.ts +350 -0
  970. package/src/shared/services/transaction-executor.ts +239 -0
  971. package/src/shared/services/vault-init.service.ts +406 -0
  972. package/src/shared/services/vault-redeem.service.ts +603 -0
  973. package/src/shared/types/blockchain.ts +64 -0
  974. package/src/shared/types/config.ts +199 -0
  975. package/src/shared/types/contract.ts +186 -0
  976. package/src/shared/types/debug.ts +57 -0
  977. package/src/shared/types/errors.ts +174 -0
  978. package/src/shared/types/execution-context.ts +11 -0
  979. package/src/shared/types/external-modules.d.ts +15 -0
  980. package/src/shared/types/funding-fee.ts +54 -0
  981. package/src/shared/types/hedge-position.ts +204 -0
  982. package/src/shared/types/index.ts +34 -0
  983. package/src/shared/types/job.ts +61 -0
  984. package/src/shared/types/limit-order.ts +228 -0
  985. package/src/shared/types/liquidation.ts +61 -0
  986. package/src/shared/types/monitoring.ts +132 -0
  987. package/src/shared/types/network-config.ts +121 -0
  988. package/src/shared/types/order.ts +56 -0
  989. package/src/shared/types/perps-liquidation.ts +283 -0
  990. package/src/shared/types/perps-order.ts +62 -0
  991. package/src/shared/types/price.ts +58 -0
  992. package/src/shared/types/task.ts +167 -0
  993. package/src/shared/types/transaction-handler.ts +86 -0
  994. package/src/shared/types/transaction-timing.ts +137 -0
  995. package/src/shared/utils/effect-retry-policy.ts +355 -0
  996. package/src/shared/utils/error-classifier.ts +439 -0
  997. package/src/shared/utils/error-handler.ts +290 -0
  998. package/src/shared/utils/event-parser-registry.ts +915 -0
  999. package/src/shared/utils/event-parser-service.ts +242 -0
  1000. package/src/shared/utils/fastify.ts +57 -0
  1001. package/src/shared/utils/flashblocks-mapper.ts +503 -0
  1002. package/src/shared/utils/funding-fee-calculator.ts +194 -0
  1003. package/src/shared/utils/health-calculator.ts +456 -0
  1004. package/src/shared/utils/hedge-parameter-converter.ts +186 -0
  1005. package/src/shared/utils/index.ts +21 -0
  1006. package/src/shared/utils/logger.ts +479 -0
  1007. package/src/shared/utils/price-bundle-helper.ts +261 -0
  1008. package/src/shared/utils/pyth-price-normalizer.ts +31 -0
  1009. package/src/shared/utils/status-reporter.ts +207 -0
  1010. package/src/shared/utils/structured-logger.ts +2250 -0
  1011. package/src/shared/utils/version.ts +21 -0
  1012. package/src/shared/utils/writer-config-matcher.ts +76 -0
  1013. package/tests/README.md +224 -0
  1014. package/tests/integration/config.ts +20 -0
  1015. package/tests/integration/fixtures/historical-params.json +1 -0
  1016. package/tests/integration/order-flow/full-flow.test.ts +381 -0
  1017. package/tests/integration/scripts/fetch-historical-params.ts +199 -0
  1018. package/tests/integration/utils/test-signer.ts +172 -0
  1019. package/tests/reports/health-factor-validation-2025-08-30T15-20-26-876Z.json +116 -0
  1020. package/tests/scripts/run-health-factor-validation.ts +385 -0
  1021. package/tests/setup.ts +57 -0
  1022. package/tests/unit/error-classifier.test.ts +118 -0
  1023. package/tests/unit/health-factor.test.ts +516 -0
  1024. package/tests/unit/limit-order-list.test.ts +183 -0
  1025. package/tests/unit/order-operation-determiner/order-operation-determiner.test.ts +422 -0
  1026. package/tests/unit/retry-handler/retry-handler.test.ts +279 -0
  1027. package/tests/unit/test-data-generator.ts +317 -0
  1028. package/tsconfig.json +32 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npx tsc:*)",
5
+ "Bash(npm run build:*)",
6
+ "Bash(redis-cli:*)",
7
+ "Bash(# 直接删除整个 active set redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning DEL \"\"limit_orders:active\"\" echo \"\"Active orders set deleted\"\" # 删除所有 limit_order keys redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning KEYS \"\"limit_order:*\"\")",
8
+ "Bash(# 删除所有 limit_order keys redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning KEYS \"\"limit_order:*\"\")",
9
+ "Bash(xargs -r redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL echo \"Deleted staging keys\" echo \"Done!\")",
10
+ "Bash(# 验证清理结果 echo \"\"limit_order keys:\"\" redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning KEYS \"\"limit_order:*\"\")",
11
+ "Bash(# 再次清理 redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning KEYS \"\"limit_order:*\"\")",
12
+ "Bash(xargs -r redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning KEYS \"limit_orders:*\")",
13
+ "Bash(xargs -r redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning KEYS \"staging:*\")",
14
+ "Bash(# 使用 SCAN 来删除,避免 KEYS 命令的问题 redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning --scan --pattern \"\"limit_order:*\"\")",
15
+ "Bash(xargs -r -L 100 redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning --scan --pattern \"limit_orders:*\")",
16
+ "Bash(xargs -r -L 100 redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning --scan --pattern \"staging:*\")",
17
+ "Bash(xargs redis-cli -u \"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\" --no-auth-warning DEL echo \"Deleted batch\" done)",
18
+ "Bash(# 最终验证 echo \"\"Final check:\"\" echo \"\"limit_order keys:\"\" redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning --scan --pattern \"\"limit_order:*\"\")",
19
+ "Bash(# 最终验证 echo \"\"Final verification:\"\" echo \"\"limit_order keys:\"\" redis-cli -u \"\"rediss://default:AVNS_aHG9OiCmgukRZmON7ne@jaspervault-v2-redis-test-do-user-13941051-0.c.db.ondigitalocean.com:25061\"\" --no-auth-warning --scan --pattern \"\"limit_order:*\"\")",
20
+ "Bash(__NEW_LINE_26eb10485465cc73__ echo \"\")",
21
+ "Bash(node -e:*)",
22
+ "Bash(git show:*)",
23
+ "Bash(git add:*)",
24
+ "Bash(git commit -m \"$\\(cat <<''EOF''\nsecurity: remove exposed credentials from env.sample\n\nReplace real passwords and API keys with placeholders:\n- Quote Center Redis password\n- Quote Center database password \n- Blockscholes API key\n- Database hostnames\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
25
+ "Bash(git push:*)",
26
+ "Bash(npm run typecheck:*)"
27
+ ]
28
+ }
29
+ }
package/.eslintrc.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "env": {
3
+ "es2022": true,
4
+ "node": true
5
+ },
6
+ "extends": [
7
+ "eslint:recommended",
8
+ "plugin:@typescript-eslint/recommended"
9
+ ],
10
+ "parser": "@typescript-eslint/parser",
11
+ "parserOptions": {
12
+ "ecmaVersion": "latest",
13
+ "sourceType": "module"
14
+ },
15
+ "plugins": [
16
+ "@typescript-eslint"
17
+ ],
18
+ "rules": {
19
+ "@typescript-eslint/no-unused-vars": "error",
20
+ "@typescript-eslint/no-explicit-any": "warn",
21
+ "@typescript-eslint/explicit-function-return-type": "warn",
22
+ "no-console": "warn",
23
+ "prefer-const": "error"
24
+ },
25
+ "ignorePatterns": [
26
+ "dist/",
27
+ "node_modules/",
28
+ "coverage/"
29
+ ]
30
+ }
package/.gitlab-ci.yml ADDED
@@ -0,0 +1,55 @@
1
+ stages:
2
+ - deploy
3
+
4
+ variables:
5
+ BASE_REGISTRY: registry.digitalocean.com/jaspervault/liquidationhub
6
+ ENV_NAME: latest
7
+
8
+ .liquidationhub_template: &liquidationhub_template
9
+ stage: deploy
10
+ only:
11
+ - master
12
+ when: manual
13
+ script: |
14
+ export COMMIT_IMG_NAME="$BASE_REGISTRY/$SERVICE_NAME:$CI_COMMIT_SHORT_SHA"
15
+ export IMG_NAME="$BASE_REGISTRY/$SERVICE_NAME:$ENV_NAME"
16
+ echo "Building and pushing $SERVICE_NAME..."
17
+ echo "Tags: $COMMIT_IMG_NAME, $IMG_NAME"
18
+ docker buildx build --push -t $COMMIT_IMG_NAME -t $IMG_NAME --target $SERVICE_NAME .
19
+ doctl apps create-deployment $DO_APPID --force-rebuild
20
+
21
+ manager-deploy:
22
+ <<: *liquidationhub_template
23
+ variables:
24
+ SERVICE_NAME: manager
25
+ DO_APPID: "413a20c1-1b50-4916-8cf3-02b61ba34559"
26
+
27
+ sync-deploy:
28
+ <<: *liquidationhub_template
29
+ variables:
30
+ SERVICE_NAME: sync
31
+ DO_APPID: "d2328fb0-ddf1-48d5-9702-9ab9e43121c9"
32
+
33
+ worker-deploy:
34
+ <<: *liquidationhub_template
35
+ variables:
36
+ SERVICE_NAME: worker
37
+ DO_APPID: "5ac2a676-3c60-4732-bc2b-1e2a4f2f612d"
38
+
39
+ dispatcher-deploy:
40
+ <<: *liquidationhub_template
41
+ variables:
42
+ SERVICE_NAME: dispatcher
43
+ DO_APPID: "b05e3d06-c375-4364-a3f2-865bdc8e923d"
44
+
45
+ test-liquidationhub:
46
+ stage: deploy
47
+ when: manual
48
+ script:
49
+ - fly deploy --dockerfile Dockerfile.test -c fly.toml
50
+
51
+ liquidationhub-jasper-dev:
52
+ stage: deploy
53
+ when: manual
54
+ script:
55
+ - fly deploy --dockerfile Dockerfile.test -c fly_jasper_dev.toml
@@ -0,0 +1,2 @@
1
+ npm run typecheck
2
+ npm run test:precommit
package/AGENTS.md ADDED
@@ -0,0 +1,63 @@
1
+ RIPER-5 模式:严格操作协议(来源:.cursor/rules/riper-5.mdc)
2
+
3
+ 先决背景
4
+ 你是Claude,你已集成到Cursor IDE(VS Code)中。因你的高级能力你往往过于急切经常在无明确要求的情况下实施更改,以为你比我更了解而误判而偏离设计。为防止这种情况,你必须严格遵循以下协议:
5
+ 你须在每个响应的开头标出你当前的模式和模型。格式:[模式:模式名称][模型:模型名称]
6
+
7
+ [模式1:研究]
8
+ 目的:仅收集信息
9
+ 允许:阅读文件、提出澄清问题、理解代码结构
10
+ 禁止:建议、实施、计划或任何行动暗示
11
+ 要求:你只能试图了解存在什么,而不是可能是什么。仅观察和提问。
12
+
13
+ [模式2:创新]
14
+ 目的:集思广益,寻找潜在方法
15
+ 允许:讨论想法、优点/缺点、寻求反馈
16
+ 禁止:具体规划、实施细节或任何代码编写
17
+ 要求:所有想法都必须以可能性而非决策的形式呈现,仅显示可能性和考虑因素
18
+
19
+ [模式3:计划]
20
+ 目的:创建详尽的技术规范
21
+ 允许:含确切文件路径、功能名称和更改的详细计划
22
+ 禁止:任何实现或代码、示例代码
23
+ 要求:计划须够全面
24
+ 强制性最后一步:将整个计划转换为1个按编号顺序排列的清单,每个原子操作作为单独的项目
25
+ 清单格式:
26
+ 实施检查清单:
27
+ 1. [动作1]
28
+ 2. [动作2]
29
+ ...
30
+ 仅显示规格和实施细节
31
+
32
+ [模式4:执行]
33
+ 目的:准确执行模式3中的计划
34
+ 允许:仅执行批准计划中明确详述的内容
35
+ 禁止:任何不在计划内的偏离、改进或创意添加
36
+ 进入要求:仅在我明确发出“进入执行模式”命令后才能进入
37
+ 偏差处理:如果发现任何需要纠正的问题,返回计划模式
38
+ 仅执行与计划匹配的内容
39
+
40
+ [模式5:回顾]
41
+ 目的:严格验证计划的实施情况
42
+ 允许:逐行比较计划和实施
43
+ 要求:明确标记任何偏差,无论偏差有多小
44
+ 偏差格式:“ :warning: 检测到偏差:[准确偏差描述]”
45
+ 报告:必须报告实施情况是否与计划一致
46
+ 结论格式:“ :white_check_mark: 实施与计划完全相符”或“ :cross_mark: 实施与计划有偏差”
47
+ 输出格式:以[模式: 回顾]开始,然后进行系统比较和明确判决
48
+
49
+ 协议指南
50
+ - 未经我明确许可,你不能在模式之间转换。
51
+ - 在执行模式下,你须 100% 忠实地遵循计划。
52
+ - 在回顾模式下,你须标记哪怕是最小的偏差。
53
+ - 你无权在声明的模式之外做出独立的决定。
54
+ - 仅当我明确发出信号时才转换模式:
55
+ “进入研究模式”
56
+ “进入创新模式”
57
+ “进入计划模式”
58
+ “进入执行模式”
59
+ “进入回顾模式”或输入+符号
60
+ 如果没有这些确切的信号,请保持当前模式。
61
+
62
+ 注:此 AGENTS.md 由 .cursor/rules/riper-5.mdc 内容同步而来;后续如需修改规则,建议在该源文件中更新并将变更同步到此处。
63
+
package/CLAUDE.md ADDED
@@ -0,0 +1,77 @@
1
+ # Jasper LiquidationHub
2
+
3
+ Blockchain-based liquidation service for perpetual contracts with role-driven modular architecture, supporting horizontal scaling via Docker containerization.
4
+
5
+ ## Tech Stack
6
+
7
+ - **Runtime**: Node.js 18+ / TypeScript 5.3+
8
+ - **Framework**: Fastify 4.24+
9
+ - **Queue**: BullMQ 5.1+
10
+ - **Storage**: Redis 4.6+
11
+ - **Blockchain**: Ethers.js 6.8+ (Arbitrum)
12
+ - **Data Source**: GraphQL (Subgraph API)
13
+ - **Logging**: Pino 8.16+
14
+
15
+ ## Commands
16
+
17
+ ```bash
18
+ npm run dev # Start development server
19
+ npm run build # Build TypeScript
20
+ npm run lint # Run ESLint
21
+ npm run test # Run tests
22
+ npm run typecheck # TypeScript type checking
23
+ ```
24
+
25
+ ## Architecture Overview
26
+
27
+ Four core services with Redis leader election for HA:
28
+
29
+ | Service | Role | Instances |
30
+ | -------------------- | ------------------------------------------------------ | -------------- |
31
+ | **Manager** | REST API, sentinel monitoring, manual liquidation | Active/Standby |
32
+ | **Data Sync** | Poll Subgraph, calculate health factors, update Redis | Single Leader |
33
+ | **Dispatcher** | Scan orders, compare prices, produce liquidation tasks | Single Leader |
34
+ | **Worker** | Consume BullMQ tasks, execute blockchain transactions | Multi-Instance |
35
+
36
+ Service roles are set via `SERVICE_ROLE` env var: `sync`, `dispatcher`, `worker`, `manager`
37
+
38
+ ## Key Directories
39
+
40
+ ```
41
+ src/services/
42
+ ├── manager/ # API server, status monitoring, service control
43
+ ├── data-sync/ # Subgraph client, order processing, Redis updates
44
+ ├── dispatcher/ # Order scanning, task production, deduplication
45
+ └── worker/ # Task consumer, liquidation executor, retry handling
46
+ ```
47
+
48
+ ## API Patterns
49
+
50
+ - Order creation: `POST /api/order/create` (unified for market/limit orders)
51
+ - Job status: `GET /api/job/status/{jobId}` or SSE `GET /api/job/stream/{jobId}`
52
+ - Market order: `targetPrice = MAX_UINT256` (Long) or `"0"` (Short)
53
+ - Limit order: `targetPrice` = valid price value
54
+
55
+ ## Code Style
56
+
57
+ - Use ES modules, not CommonJS
58
+ - Prefer named exports
59
+ - All numeric values in contracts use string format (uint256/uint64)
60
+ - Prices and amounts in wei (18 decimals)
61
+ - Use EIP-712 signatures for order signing
62
+
63
+ ## Important Notes
64
+
65
+ IMPORTANT: Code, comments, documentation, and UI text in English. Communicate with user in 中文.
66
+
67
+ - NEVER commit `.env` files or expose private keys
68
+ - Redis keys use `leadership:{service}:leader` pattern for HA
69
+ - BullMQ retry: exponential backoff, max 5 attempts, max delay 5min
70
+ - All blockchain transactions support Flashbots/Flashblocks for fast confirmation
71
+ - Order deduplication uses `signature` as unique identifier
72
+
73
+ ## Documentation References
74
+
75
+ - Architecture details: @docs/architecture.md
76
+ - Order API specs: @docs/API_ORDER_CREATE.md
77
+ - Perps flow: @docs/perps-order-flow.md
package/Dockerfile ADDED
@@ -0,0 +1,99 @@
1
+ # =========================================
2
+ # 阶段 1: Builder (构建器)
3
+ # 负责安装所有依赖并编译 TypeScript
4
+ # =========================================
5
+ FROM node:18-alpine AS builder
6
+
7
+ WORKDIR /app
8
+
9
+ # 复制依赖文件 (利用缓存)
10
+ COPY package*.json ./
11
+ COPY tsconfig.json ./
12
+
13
+ # 安装所有依赖 (包括 devDependencies)
14
+ RUN npm ci
15
+
16
+ # 复制源代码和配置
17
+ COPY src/ ./src/
18
+ COPY config/ ./config/
19
+
20
+ # 编译 TypeScript
21
+ RUN npm run build
22
+
23
+
24
+ # =========================================
25
+ # 阶段 2: Runtime Base (运行时基础)
26
+ # 构建一个包含生产依赖和已编译代码的通用基础镜像
27
+ # =========================================
28
+ FROM node:18-alpine AS runtime-base
29
+
30
+ # 安装 curl (用于健康检查) 并创建非 root 用户
31
+ RUN apk add --no-cache curl && \
32
+ addgroup -g 1001 -S liquidation && \
33
+ adduser -S liquidation -u 1001 -G liquidation
34
+
35
+ WORKDIR /app
36
+
37
+ # 复制 package.json 以安装生产依赖
38
+ COPY package*.json ./
39
+
40
+ # 仅安装生产依赖
41
+ RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force
42
+
43
+ # 从 builder 阶段复制编译好的代码和配置
44
+ COPY --from=builder /app/dist ./dist/
45
+ COPY --from=builder /app/config ./config/
46
+
47
+ # 设置文件权限
48
+ RUN chown -R liquidation:liquidation /app
49
+
50
+ # 切换到非 root 用户
51
+ USER liquidation
52
+
53
+ # 设置所有服务共享的环境变量
54
+ ENV RISK_MMR=0.005
55
+ ENV USE_BUNDLER=false
56
+ ENV BUNDLER_PROVIDER=eoa
57
+ # ENV USE_BUNDLER=false
58
+ # ENV BUNDLER_PROVIDER=eoa
59
+ ENV COINBASE_ENTRYPOINT=0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
60
+ ENV COINBASE_VAULT_INDEX=1
61
+ ENV FLASHBLOCKS_WS_RPC_URL=wss://base-mainnet.g.alchemy.com/v2/igHoSYAWMvPX86unqNbyZ
62
+ # 默认启动命令
63
+ CMD ["node", "dist/app.js"]
64
+
65
+
66
+ # =========================================
67
+ # 阶段 3: Final Services (最终服务)
68
+ # 每个服务都继承自 runtime-base,并只添加各自特定的配置
69
+ # =========================================
70
+
71
+ # --- Manager 服务 ---
72
+ FROM runtime-base AS manager
73
+ EXPOSE 3000
74
+ ENV SERVICE_ROLE=manager
75
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
76
+ CMD curl -f http://localhost:3000 || exit 1
77
+
78
+ # --- Sync 服务 ---
79
+ FROM runtime-base AS sync
80
+ EXPOSE 3001
81
+ ENV SERVICE_ROLE=sync
82
+ ENV SUBGRAPH_TIMEOUT=30000
83
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
84
+ CMD curl -f http://localhost:3001/health || exit 1
85
+
86
+ # --- Worker 服务 ---
87
+ FROM runtime-base AS worker
88
+ EXPOSE 3002
89
+ ENV SERVICE_ROLE=worker
90
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
91
+ CMD curl -f http://localhost:3002/health || exit 1
92
+
93
+ # --- Dispatcher 服务 ---
94
+ FROM runtime-base AS dispatcher
95
+ EXPOSE 3003
96
+ ENV SERVICE_ROLE=dispatcher
97
+ # 假设健康检查路径为 /health,端口为 3003,请根据你的代码实际情况修改
98
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
99
+ CMD curl -f http://localhost:3003/health || exit 1
@@ -0,0 +1,61 @@
1
+ # Multi-stage build for production deployment
2
+ # Build stage
3
+ FROM node:18-alpine AS builder
4
+
5
+ WORKDIR /app
6
+
7
+ # Copy dependency files first for better caching
8
+ COPY package*.json ./
9
+ COPY tsconfig.json ./
10
+
11
+ # Install all dependencies including devDependencies for building
12
+ RUN npm ci
13
+
14
+ # Copy source code and config
15
+ COPY src/ ./src/
16
+ COPY config/ ./config/
17
+
18
+ # Build TypeScript to JavaScript
19
+ RUN npm run build
20
+
21
+ # Runtime stage
22
+ FROM node:18-alpine AS runtime
23
+
24
+ # Install curl for health checks
25
+ RUN apk add --no-cache curl
26
+
27
+ # Create non-root user for security
28
+ RUN addgroup -g 1001 -S liquidation && \
29
+ adduser -S liquidation -u 1001 -G liquidation
30
+
31
+ WORKDIR /app
32
+
33
+ # Copy package files for production install
34
+ COPY package*.json ./
35
+
36
+ # Install only production dependencies
37
+ RUN npm ci --only=production && npm cache clean --force
38
+
39
+ # Copy built application and config from builder stage
40
+ COPY --from=builder /app/dist ./dist/
41
+ COPY --from=builder /app/config ./config/
42
+
43
+ # Set proper ownership
44
+ RUN chown -R liquidation:liquidation /app
45
+
46
+ # Expose required ports
47
+ EXPOSE 3000 3001 3002
48
+
49
+ # Set default environment variables
50
+ ENV SERVICE_ROLE=manager
51
+ ENV RISK_MMR=0.005
52
+
53
+ # Configure health check
54
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
55
+ CMD curl -f http://localhost:3000 || exit 1
56
+
57
+ # Switch to non-root user
58
+ USER liquidation
59
+
60
+ # Start the application
61
+ CMD ["node", "dist/app.js"]
@@ -0,0 +1,59 @@
1
+ # Multi-stage build for sync service deployment
2
+ # Build stage
3
+ FROM node:18-alpine AS builder
4
+
5
+ WORKDIR /app
6
+
7
+ # Copy dependency files first for better caching
8
+ COPY package*.json ./
9
+ COPY tsconfig.json ./
10
+
11
+ # Install all dependencies including devDependencies for building
12
+ RUN npm ci
13
+
14
+ # Copy source code and config
15
+ COPY src/ ./src/
16
+ COPY config/ ./config/
17
+
18
+ # Build TypeScript to JavaScript
19
+ RUN npm run build
20
+
21
+ # Runtime stage
22
+ FROM node:18-alpine AS runtime
23
+
24
+ # Install curl for health checks
25
+ RUN apk add --no-cache curl
26
+
27
+ # Create non-root user for security
28
+ RUN addgroup -g 1001 -S liquidation && \
29
+ adduser -S liquidation -u 1001 -G liquidation
30
+
31
+ WORKDIR /app
32
+
33
+ # Copy package files for production install
34
+ COPY package*.json ./
35
+
36
+ # Install only production dependencies
37
+ RUN npm ci --only=production && npm cache clean --force
38
+
39
+ # Copy built application and config from builder stage
40
+ COPY --from=builder /app/dist ./dist/
41
+ COPY --from=builder /app/config ./config/
42
+
43
+ # Set proper ownership
44
+ RUN chown -R liquidation:liquidation /app
45
+
46
+ # Set default environment variables for sync service
47
+ ENV SERVICE_ROLE=sync
48
+ ENV RISK_MMR=0.005
49
+ ENV SUBGRAPH_TIMEOUT=30000
50
+
51
+ # Configure health check
52
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
53
+ CMD curl -f http://localhost:3001/health || exit 1
54
+
55
+ # Switch to non-root user
56
+ USER liquidation
57
+
58
+ # Start the sync service
59
+ CMD ["node", "dist/app.js"]
@@ -0,0 +1,104 @@
1
+ # Multi-stage build for production deployment
2
+ # Build stage
3
+ FROM node:18-alpine AS builder
4
+
5
+ WORKDIR /app
6
+
7
+ # Copy dependency files first for better caching
8
+ COPY package*.json ./
9
+ COPY tsconfig.json ./
10
+
11
+ # Install all dependencies including devDependencies for building
12
+ RUN npm ci
13
+
14
+ # Copy source code and config
15
+ COPY src/ ./src/
16
+ COPY config/ ./config/
17
+
18
+ # Build TypeScript to JavaScript
19
+ RUN npm run build
20
+
21
+ # Runtime stage
22
+ FROM node:18-alpine AS runtime
23
+
24
+ # Install curl for health checks and PM2
25
+ RUN apk add --no-cache curl && npm install -g pm2
26
+
27
+ # Create non-root user for security
28
+ RUN addgroup -g 1001 -S liquidation && \
29
+ adduser -S liquidation -u 1001 -G liquidation
30
+
31
+ WORKDIR /app
32
+
33
+ # Copy package files for production install
34
+ COPY package*.json ./
35
+
36
+ # Install only production dependencies (skip prepare/husky in container)
37
+ RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force
38
+
39
+ # Copy built application and config from builder stage
40
+ COPY --from=builder /app/dist ./dist/
41
+ COPY --from=builder /app/config ./config/
42
+
43
+ # Create PM2 ecosystem file
44
+ RUN cat <<EOF > ecosystem.config.js
45
+ module.exports = {
46
+ apps: [
47
+ {
48
+ name: 'manager',
49
+ script: 'dist/app.js',
50
+ instances: 2,
51
+ env: {
52
+ SERVICE_ROLE: 'manager',
53
+ PORT: 3000
54
+ }
55
+ },
56
+ {
57
+ name: 'sync',
58
+ script: 'dist/app.js',
59
+ instances: 2,
60
+ env: {
61
+ SERVICE_ROLE: 'sync',
62
+ PORT: 3001
63
+ }
64
+ },
65
+ {
66
+ name: 'worker',
67
+ script: 'dist/app.js',
68
+ instances: 2,
69
+ env: {
70
+ SERVICE_ROLE: 'worker',
71
+ PORT: 3002
72
+ }
73
+ },
74
+ {
75
+ name: 'dispatcher',
76
+ script: 'dist/app.js',
77
+ instances: 2,
78
+ env: {
79
+ SERVICE_ROLE: 'dispatcher',
80
+ PORT: 3003
81
+ }
82
+ }
83
+ ]
84
+ };
85
+ EOF
86
+
87
+ # Set proper ownership
88
+ RUN chown -R liquidation:liquidation /app
89
+
90
+ # Expose required ports
91
+ EXPOSE 3000 3001 3002 3003
92
+
93
+ # Set default environment variables
94
+ ENV RISK_MMR=0.005
95
+
96
+ # Configure health checks for all services
97
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
98
+ CMD sh -c 'curl -f http://localhost:3000/health && curl -f http://localhost:3001/health && curl -f http://localhost:3002/health && curl -f http://localhost:3003/health' || exit 1
99
+
100
+ # Switch to non-root user
101
+ USER liquidation
102
+
103
+ # Start all services with PM2
104
+ CMD ["pm2-runtime", "ecosystem.config.js"]
@@ -0,0 +1,62 @@
1
+ # Multi-stage build for worker service deployment
2
+ # Build stage
3
+ FROM node:18-alpine AS builder
4
+
5
+ WORKDIR /app
6
+
7
+ # Copy dependency files first for better caching
8
+ COPY package*.json ./
9
+ COPY tsconfig.json ./
10
+
11
+ # Install all dependencies including devDependencies for building
12
+ RUN npm ci
13
+
14
+ # Copy source code and config
15
+ COPY src/ ./src/
16
+ COPY config/ ./config/
17
+
18
+ # Build TypeScript to JavaScript
19
+ RUN npm run build
20
+
21
+ # Runtime stage
22
+ FROM node:18-alpine AS runtime
23
+
24
+ # Install curl for health checks
25
+ RUN apk add --no-cache curl
26
+
27
+ # Create non-root user for security
28
+ RUN addgroup -g 1001 -S liquidation && \
29
+ adduser -S liquidation -u 1001 -G liquidation
30
+
31
+ WORKDIR /app
32
+
33
+ # Copy package files for production install
34
+ COPY package*.json ./
35
+
36
+ # Install only production dependencies
37
+ RUN npm ci --only=production && npm cache clean --force
38
+
39
+ # Copy built application and config from builder stage
40
+ COPY --from=builder /app/dist ./dist/
41
+ COPY --from=builder /app/config ./config/
42
+
43
+ # Set proper ownership
44
+ RUN chown -R liquidation:liquidation /app
45
+
46
+ # Set default environment variables for worker service
47
+ ENV SERVICE_ROLE=worker
48
+ ENV RISK_MMR=0.005
49
+ ENV USE_BUNDLER=true
50
+ ENV BUNDLER_PROVIDER=coinbase
51
+ ENV COINBASE_ENTRYPOINT=0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
52
+ ENV COINBASE_VAULT_INDEX=1
53
+
54
+ # Configure health check
55
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
56
+ CMD curl -f http://localhost:3002/health || exit 1
57
+
58
+ # Switch to non-root user
59
+ USER liquidation
60
+
61
+ # Start the worker service
62
+ CMD ["node", "dist/app.js"]