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.
- package/.claude/settings.local.json +29 -0
- package/.eslintrc.json +30 -0
- package/.gitlab-ci.yml +55 -0
- package/.husky/pre-commit +2 -0
- package/AGENTS.md +63 -0
- package/CLAUDE.md +77 -0
- package/Dockerfile +99 -0
- package/Dockerfile.manager +61 -0
- package/Dockerfile.sync +59 -0
- package/Dockerfile.test +104 -0
- package/Dockerfile.worker +62 -0
- package/README.md +107 -0
- package/cli/README.md +138 -0
- package/cli/bin/jv.ts +33 -0
- package/cli/config/chains.json +104 -0
- package/cli/docs/OPENCLAW_GUIDE.md +190 -0
- package/cli/docs/USER_GUIDE.md +289 -0
- package/cli/jest.config.js +20 -0
- package/cli/package-lock.json +6421 -0
- package/cli/package.json +54 -0
- package/cli/src/client.ts +143 -0
- package/cli/src/commands/connect.ts +176 -0
- package/cli/src/commands/deposit.ts +463 -0
- package/cli/src/commands/init.ts +114 -0
- package/cli/src/commands/job.ts +22 -0
- package/cli/src/commands/limit-order.ts +56 -0
- package/cli/src/commands/order.ts +181 -0
- package/cli/src/commands/orders.ts +97 -0
- package/cli/src/commands/sl.ts +107 -0
- package/cli/src/commands/tp.ts +107 -0
- package/cli/src/commands/vault.ts +383 -0
- package/cli/src/services/chain-config.ts +151 -0
- package/cli/src/services/key-manager.ts +95 -0
- package/cli/src/services/order-signer.ts +214 -0
- package/cli/src/services/price-service.ts +83 -0
- package/cli/src/services/subgraph-client.ts +188 -0
- package/cli/src/services/vault-profile.ts +61 -0
- package/cli/src/templates/skill-body.ts +238 -0
- package/cli/src/types.ts +263 -0
- package/cli/src/utils/config.ts +22 -0
- package/cli/src/utils/endpoints.ts +15 -0
- package/cli/src/utils/output.ts +58 -0
- package/cli/tests/client.test.ts +162 -0
- package/cli/tests/commands/deposit.test.ts +233 -0
- package/cli/tests/commands/init.test.ts +217 -0
- package/cli/tests/commands/job.test.ts +56 -0
- package/cli/tests/commands/limit-order.test.ts +95 -0
- package/cli/tests/commands/order.test.ts +192 -0
- package/cli/tests/commands/orders.test.ts +101 -0
- package/cli/tests/commands/sl.test.ts +140 -0
- package/cli/tests/commands/tp.test.ts +140 -0
- package/cli/tests/commands/vault.test.ts +73 -0
- package/cli/tsconfig.json +23 -0
- package/config/networks.json +315 -0
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +124 -0
- package/dist/app.js.map +1 -0
- package/dist/services/dispatcher/duplicate-guard.d.ts +7 -0
- package/dist/services/dispatcher/duplicate-guard.d.ts.map +1 -0
- package/dist/services/dispatcher/duplicate-guard.js +15 -0
- package/dist/services/dispatcher/duplicate-guard.js.map +1 -0
- package/dist/services/dispatcher/hedge-option-scanner.d.ts +25 -0
- package/dist/services/dispatcher/hedge-option-scanner.d.ts.map +1 -0
- package/dist/services/dispatcher/hedge-option-scanner.js +65 -0
- package/dist/services/dispatcher/hedge-option-scanner.js.map +1 -0
- package/dist/services/dispatcher/hedge-option-task-creator.d.ts +10 -0
- package/dist/services/dispatcher/hedge-option-task-creator.d.ts.map +1 -0
- package/dist/services/dispatcher/hedge-option-task-creator.js +68 -0
- package/dist/services/dispatcher/hedge-option-task-creator.js.map +1 -0
- package/dist/services/dispatcher/index.d.ts +13 -0
- package/dist/services/dispatcher/index.d.ts.map +1 -0
- package/dist/services/dispatcher/index.js +746 -0
- package/dist/services/dispatcher/index.js.map +1 -0
- package/dist/services/dispatcher/limit-order-scanner.d.ts +153 -0
- package/dist/services/dispatcher/limit-order-scanner.d.ts.map +1 -0
- package/dist/services/dispatcher/limit-order-scanner.js +823 -0
- package/dist/services/dispatcher/limit-order-scanner.js.map +1 -0
- package/dist/services/dispatcher/limit-order-task-creator.d.ts +28 -0
- package/dist/services/dispatcher/limit-order-task-creator.d.ts.map +1 -0
- package/dist/services/dispatcher/limit-order-task-creator.js +131 -0
- package/dist/services/dispatcher/limit-order-task-creator.js.map +1 -0
- package/dist/services/dispatcher/order-scanner.d.ts +8 -0
- package/dist/services/dispatcher/order-scanner.d.ts.map +1 -0
- package/dist/services/dispatcher/order-scanner.js +17 -0
- package/dist/services/dispatcher/order-scanner.js.map +1 -0
- package/dist/services/dispatcher/queue-manager.d.ts +4 -0
- package/dist/services/dispatcher/queue-manager.d.ts.map +1 -0
- package/dist/services/dispatcher/queue-manager.js +46 -0
- package/dist/services/dispatcher/queue-manager.js.map +1 -0
- package/dist/services/dispatcher/task-creator.d.ts +8 -0
- package/dist/services/dispatcher/task-creator.d.ts.map +1 -0
- package/dist/services/dispatcher/task-creator.js +14 -0
- package/dist/services/dispatcher/task-creator.js.map +1 -0
- package/dist/services/manager/api-server.d.ts +36 -0
- package/dist/services/manager/api-server.d.ts.map +1 -0
- package/dist/services/manager/api-server.js +304 -0
- package/dist/services/manager/api-server.js.map +1 -0
- package/dist/services/manager/index.d.ts +4 -0
- package/dist/services/manager/index.d.ts.map +1 -0
- package/dist/services/manager/index.js +108 -0
- package/dist/services/manager/index.js.map +1 -0
- package/dist/services/manager/routes/funding-fee.d.ts +6 -0
- package/dist/services/manager/routes/funding-fee.d.ts.map +1 -0
- package/dist/services/manager/routes/funding-fee.js +730 -0
- package/dist/services/manager/routes/funding-fee.js.map +1 -0
- package/dist/services/manager/routes/funding-rates.d.ts +5 -0
- package/dist/services/manager/routes/funding-rates.d.ts.map +1 -0
- package/dist/services/manager/routes/funding-rates.js +360 -0
- package/dist/services/manager/routes/funding-rates.js.map +1 -0
- package/dist/services/manager/routes/hedge.d.ts +9 -0
- package/dist/services/manager/routes/hedge.d.ts.map +1 -0
- package/dist/services/manager/routes/hedge.js +383 -0
- package/dist/services/manager/routes/hedge.js.map +1 -0
- package/dist/services/manager/routes/job-status.d.ts +8 -0
- package/dist/services/manager/routes/job-status.d.ts.map +1 -0
- package/dist/services/manager/routes/job-status.js +82 -0
- package/dist/services/manager/routes/job-status.js.map +1 -0
- package/dist/services/manager/routes/job-stream.d.ts +10 -0
- package/dist/services/manager/routes/job-stream.d.ts.map +1 -0
- package/dist/services/manager/routes/job-stream.js +233 -0
- package/dist/services/manager/routes/job-stream.js.map +1 -0
- package/dist/services/manager/routes/limit-order.d.ts +8 -0
- package/dist/services/manager/routes/limit-order.d.ts.map +1 -0
- package/dist/services/manager/routes/limit-order.js +502 -0
- package/dist/services/manager/routes/limit-order.js.map +1 -0
- package/dist/services/manager/routes/liquidation.d.ts +9 -0
- package/dist/services/manager/routes/liquidation.d.ts.map +1 -0
- package/dist/services/manager/routes/liquidation.js +454 -0
- package/dist/services/manager/routes/liquidation.js.map +1 -0
- package/dist/services/manager/routes/order.d.ts +11 -0
- package/dist/services/manager/routes/order.d.ts.map +1 -0
- package/dist/services/manager/routes/order.js +585 -0
- package/dist/services/manager/routes/order.js.map +1 -0
- package/dist/services/manager/routes/orders.d.ts +7 -0
- package/dist/services/manager/routes/orders.d.ts.map +1 -0
- package/dist/services/manager/routes/orders.js +311 -0
- package/dist/services/manager/routes/orders.js.map +1 -0
- package/dist/services/manager/routes/perps-order-creation.d.ts +10 -0
- package/dist/services/manager/routes/perps-order-creation.d.ts.map +1 -0
- package/dist/services/manager/routes/perps-order-creation.js +535 -0
- package/dist/services/manager/routes/perps-order-creation.js.map +1 -0
- package/dist/services/manager/routes/status.d.ts +6 -0
- package/dist/services/manager/routes/status.d.ts.map +1 -0
- package/dist/services/manager/routes/status.js +231 -0
- package/dist/services/manager/routes/status.js.map +1 -0
- package/dist/services/manager/routes/vault-init.d.ts +10 -0
- package/dist/services/manager/routes/vault-init.d.ts.map +1 -0
- package/dist/services/manager/routes/vault-init.js +287 -0
- package/dist/services/manager/routes/vault-init.js.map +1 -0
- package/dist/services/manager/routes/vault-redeem.d.ts +10 -0
- package/dist/services/manager/routes/vault-redeem.d.ts.map +1 -0
- package/dist/services/manager/routes/vault-redeem.js +355 -0
- package/dist/services/manager/routes/vault-redeem.js.map +1 -0
- package/dist/services/manager/service-controller.d.ts +17 -0
- package/dist/services/manager/service-controller.d.ts.map +1 -0
- package/dist/services/manager/service-controller.js +64 -0
- package/dist/services/manager/service-controller.js.map +1 -0
- package/dist/services/manager/status-monitor.d.ts +24 -0
- package/dist/services/manager/status-monitor.d.ts.map +1 -0
- package/dist/services/manager/status-monitor.js +233 -0
- package/dist/services/manager/status-monitor.js.map +1 -0
- package/dist/services/manager/types/limit-order-types.d.ts +88 -0
- package/dist/services/manager/types/limit-order-types.d.ts.map +1 -0
- package/dist/services/manager/types/limit-order-types.js +3 -0
- package/dist/services/manager/types/limit-order-types.js.map +1 -0
- package/dist/services/manager/types/order-types.d.ts +54 -0
- package/dist/services/manager/types/order-types.d.ts.map +1 -0
- package/dist/services/manager/types/order-types.js +3 -0
- package/dist/services/manager/types/order-types.js.map +1 -0
- package/dist/services/manager/types/perps-order-types.d.ts +66 -0
- package/dist/services/manager/types/perps-order-types.d.ts.map +1 -0
- package/dist/services/manager/types/perps-order-types.js +3 -0
- package/dist/services/manager/types/perps-order-types.js.map +1 -0
- package/dist/services/manager/types/vault-init-types.d.ts +74 -0
- package/dist/services/manager/types/vault-init-types.d.ts.map +1 -0
- package/dist/services/manager/types/vault-init-types.js +7 -0
- package/dist/services/manager/types/vault-init-types.js.map +1 -0
- package/dist/services/manager/types/vault-redeem-types.d.ts +112 -0
- package/dist/services/manager/types/vault-redeem-types.d.ts.map +1 -0
- package/dist/services/manager/types/vault-redeem-types.js +7 -0
- package/dist/services/manager/types/vault-redeem-types.js.map +1 -0
- package/dist/services/manager/types.d.ts +243 -0
- package/dist/services/manager/types.d.ts.map +1 -0
- package/dist/services/manager/types.js +3 -0
- package/dist/services/manager/types.js.map +1 -0
- package/dist/services/sync/blockscholes-price-client.d.ts +67 -0
- package/dist/services/sync/blockscholes-price-client.d.ts.map +1 -0
- package/dist/services/sync/blockscholes-price-client.js +789 -0
- package/dist/services/sync/blockscholes-price-client.js.map +1 -0
- package/dist/services/sync/data-synchronizer.d.ts +75 -0
- package/dist/services/sync/data-synchronizer.d.ts.map +1 -0
- package/dist/services/sync/data-synchronizer.js +855 -0
- package/dist/services/sync/data-synchronizer.js.map +1 -0
- package/dist/services/sync/funding-fee-task-dispatcher.d.ts +21 -0
- package/dist/services/sync/funding-fee-task-dispatcher.d.ts.map +1 -0
- package/dist/services/sync/funding-fee-task-dispatcher.js +80 -0
- package/dist/services/sync/funding-fee-task-dispatcher.js.map +1 -0
- package/dist/services/sync/funding-rate-task-dispatcher.d.ts +20 -0
- package/dist/services/sync/funding-rate-task-dispatcher.d.ts.map +1 -0
- package/dist/services/sync/funding-rate-task-dispatcher.js +90 -0
- package/dist/services/sync/funding-rate-task-dispatcher.js.map +1 -0
- package/dist/services/sync/index.d.ts +4 -0
- package/dist/services/sync/index.d.ts.map +1 -0
- package/dist/services/sync/index.js +254 -0
- package/dist/services/sync/index.js.map +1 -0
- package/dist/services/sync/liquidation-price-task-dispatcher.d.ts +16 -0
- package/dist/services/sync/liquidation-price-task-dispatcher.d.ts.map +1 -0
- package/dist/services/sync/liquidation-price-task-dispatcher.js +63 -0
- package/dist/services/sync/liquidation-price-task-dispatcher.js.map +1 -0
- package/dist/services/sync/order-generator.d.ts +10 -0
- package/dist/services/sync/order-generator.d.ts.map +1 -0
- package/dist/services/sync/order-generator.js +57 -0
- package/dist/services/sync/order-generator.js.map +1 -0
- package/dist/services/sync/pyth-client.d.ts +25 -0
- package/dist/services/sync/pyth-client.d.ts.map +1 -0
- package/dist/services/sync/pyth-client.js +183 -0
- package/dist/services/sync/pyth-client.js.map +1 -0
- package/dist/services/sync/queries.d.ts +194 -0
- package/dist/services/sync/queries.d.ts.map +1 -0
- package/dist/services/sync/queries.js +347 -0
- package/dist/services/sync/queries.js.map +1 -0
- package/dist/services/sync/run-batch-loader.d.ts +19 -0
- package/dist/services/sync/run-batch-loader.d.ts.map +1 -0
- package/dist/services/sync/run-batch-loader.js +32 -0
- package/dist/services/sync/run-batch-loader.js.map +1 -0
- package/dist/services/sync/subgraph-client.d.ts +21 -0
- package/dist/services/sync/subgraph-client.d.ts.map +1 -0
- package/dist/services/sync/subgraph-client.js +214 -0
- package/dist/services/sync/subgraph-client.js.map +1 -0
- package/dist/services/sync/subgraph-order-generator.d.ts +26 -0
- package/dist/services/sync/subgraph-order-generator.d.ts.map +1 -0
- package/dist/services/sync/subgraph-order-generator.js +133 -0
- package/dist/services/sync/subgraph-order-generator.js.map +1 -0
- package/dist/services/sync/websocket-client.d.ts +18 -0
- package/dist/services/sync/websocket-client.d.ts.map +1 -0
- package/dist/services/sync/websocket-client.js +83 -0
- package/dist/services/sync/websocket-client.js.map +1 -0
- package/dist/services/worker/contract-client.d.ts +300 -0
- package/dist/services/worker/contract-client.d.ts.map +1 -0
- package/dist/services/worker/contract-client.js +5704 -0
- package/dist/services/worker/contract-client.js.map +1 -0
- package/dist/services/worker/funding-fee-processor.d.ts +52 -0
- package/dist/services/worker/funding-fee-processor.d.ts.map +1 -0
- package/dist/services/worker/funding-fee-processor.js +347 -0
- package/dist/services/worker/funding-fee-processor.js.map +1 -0
- package/dist/services/worker/funding-fee-provider.d.ts +29 -0
- package/dist/services/worker/funding-fee-provider.d.ts.map +1 -0
- package/dist/services/worker/funding-fee-provider.js +185 -0
- package/dist/services/worker/funding-fee-provider.js.map +1 -0
- package/dist/services/worker/funding-fee-update-executor.d.ts +20 -0
- package/dist/services/worker/funding-fee-update-executor.d.ts.map +1 -0
- package/dist/services/worker/funding-fee-update-executor.js +123 -0
- package/dist/services/worker/funding-fee-update-executor.js.map +1 -0
- package/dist/services/worker/gas-manager.d.ts +15 -0
- package/dist/services/worker/gas-manager.d.ts.map +1 -0
- package/dist/services/worker/gas-manager.js +32 -0
- package/dist/services/worker/gas-manager.js.map +1 -0
- package/dist/services/worker/health-factor-processor.d.ts +20 -0
- package/dist/services/worker/health-factor-processor.d.ts.map +1 -0
- package/dist/services/worker/health-factor-processor.js +129 -0
- package/dist/services/worker/health-factor-processor.js.map +1 -0
- package/dist/services/worker/index.d.ts +4 -0
- package/dist/services/worker/index.d.ts.map +1 -0
- package/dist/services/worker/index.js +190 -0
- package/dist/services/worker/index.js.map +1 -0
- package/dist/services/worker/liquidation-executor.d.ts +8 -0
- package/dist/services/worker/liquidation-executor.d.ts.map +1 -0
- package/dist/services/worker/liquidation-executor.js +26 -0
- package/dist/services/worker/liquidation-executor.js.map +1 -0
- package/dist/services/worker/liquidation-price-encoder.d.ts +43 -0
- package/dist/services/worker/liquidation-price-encoder.d.ts.map +1 -0
- package/dist/services/worker/liquidation-price-encoder.js +67 -0
- package/dist/services/worker/liquidation-price-encoder.js.map +1 -0
- package/dist/services/worker/liquidation-price-processor.d.ts +32 -0
- package/dist/services/worker/liquidation-price-processor.d.ts.map +1 -0
- package/dist/services/worker/liquidation-price-processor.js +291 -0
- package/dist/services/worker/liquidation-price-processor.js.map +1 -0
- package/dist/services/worker/price-adapter.d.ts +10 -0
- package/dist/services/worker/price-adapter.d.ts.map +1 -0
- package/dist/services/worker/price-adapter.js +48 -0
- package/dist/services/worker/price-adapter.js.map +1 -0
- package/dist/services/worker/production-liquidation-executor.d.ts +19 -0
- package/dist/services/worker/production-liquidation-executor.d.ts.map +1 -0
- package/dist/services/worker/production-liquidation-executor.js +31 -0
- package/dist/services/worker/production-liquidation-executor.js.map +1 -0
- package/dist/services/worker/pyth-price-service.d.ts +45 -0
- package/dist/services/worker/pyth-price-service.d.ts.map +1 -0
- package/dist/services/worker/pyth-price-service.js +567 -0
- package/dist/services/worker/pyth-price-service.js.map +1 -0
- package/dist/services/worker/signature-service.d.ts +19 -0
- package/dist/services/worker/signature-service.d.ts.map +1 -0
- package/dist/services/worker/signature-service.js +155 -0
- package/dist/services/worker/signature-service.js.map +1 -0
- package/dist/services/worker/task-consumer.d.ts +24 -0
- package/dist/services/worker/task-consumer.d.ts.map +1 -0
- package/dist/services/worker/task-consumer.js +2700 -0
- package/dist/services/worker/task-consumer.js.map +1 -0
- package/dist/services/worker/transaction-builder.d.ts +34 -0
- package/dist/services/worker/transaction-builder.d.ts.map +1 -0
- package/dist/services/worker/transaction-builder.js +265 -0
- package/dist/services/worker/transaction-builder.js.map +1 -0
- package/dist/services/worker/transaction-sender.d.ts +105 -0
- package/dist/services/worker/transaction-sender.d.ts.map +1 -0
- package/dist/services/worker/transaction-sender.js +494 -0
- package/dist/services/worker/transaction-sender.js.map +1 -0
- package/dist/shared/adapters/contract-liquidation-adapter.d.ts +95 -0
- package/dist/shared/adapters/contract-liquidation-adapter.d.ts.map +1 -0
- package/dist/shared/adapters/contract-liquidation-adapter.js +233 -0
- package/dist/shared/adapters/contract-liquidation-adapter.js.map +1 -0
- package/dist/shared/adapters/price/index.d.ts +5 -0
- package/dist/shared/adapters/price/index.d.ts.map +1 -0
- package/dist/shared/adapters/price/index.js +22 -0
- package/dist/shared/adapters/price/index.js.map +1 -0
- package/dist/shared/adapters/price/price-adapter-factory.d.ts +45 -0
- package/dist/shared/adapters/price/price-adapter-factory.d.ts.map +1 -0
- package/dist/shared/adapters/price/price-adapter-factory.js +132 -0
- package/dist/shared/adapters/price/price-adapter-factory.js.map +1 -0
- package/dist/shared/adapters/price/pyth-price-adapter.d.ts +100 -0
- package/dist/shared/adapters/price/pyth-price-adapter.d.ts.map +1 -0
- package/dist/shared/adapters/price/pyth-price-adapter.js +472 -0
- package/dist/shared/adapters/price/pyth-price-adapter.js.map +1 -0
- package/dist/shared/adapters/price/quote-center-price-adapter.d.ts +273 -0
- package/dist/shared/adapters/price/quote-center-price-adapter.d.ts.map +1 -0
- package/dist/shared/adapters/price/quote-center-price-adapter.js +1379 -0
- package/dist/shared/adapters/price/quote-center-price-adapter.js.map +1 -0
- package/dist/shared/adapters/price/types.d.ts +168 -0
- package/dist/shared/adapters/price/types.d.ts.map +1 -0
- package/dist/shared/adapters/price/types.js +3 -0
- package/dist/shared/adapters/price/types.js.map +1 -0
- package/dist/shared/blockchain/alchemy-bundler-handler.d.ts +35 -0
- package/dist/shared/blockchain/alchemy-bundler-handler.d.ts.map +1 -0
- package/dist/shared/blockchain/alchemy-bundler-handler.js +377 -0
- package/dist/shared/blockchain/alchemy-bundler-handler.js.map +1 -0
- package/dist/shared/blockchain/coinbase-bundler-handler.d.ts +37 -0
- package/dist/shared/blockchain/coinbase-bundler-handler.d.ts.map +1 -0
- package/dist/shared/blockchain/coinbase-bundler-handler.js +645 -0
- package/dist/shared/blockchain/coinbase-bundler-handler.js.map +1 -0
- package/dist/shared/blockchain/dynamic-gas-manager.d.ts +23 -0
- package/dist/shared/blockchain/dynamic-gas-manager.d.ts.map +1 -0
- package/dist/shared/blockchain/dynamic-gas-manager.js +161 -0
- package/dist/shared/blockchain/dynamic-gas-manager.js.map +1 -0
- package/dist/shared/blockchain/eoa-transaction-handler.d.ts +85 -0
- package/dist/shared/blockchain/eoa-transaction-handler.d.ts.map +1 -0
- package/dist/shared/blockchain/eoa-transaction-handler.js +863 -0
- package/dist/shared/blockchain/eoa-transaction-handler.js.map +1 -0
- package/dist/shared/blockchain/flashblocks-listener.d.ts +22 -0
- package/dist/shared/blockchain/flashblocks-listener.d.ts.map +1 -0
- package/dist/shared/blockchain/flashblocks-listener.js +214 -0
- package/dist/shared/blockchain/flashblocks-listener.js.map +1 -0
- package/dist/shared/blockchain/polling-confirmation.d.ts +33 -0
- package/dist/shared/blockchain/polling-confirmation.d.ts.map +1 -0
- package/dist/shared/blockchain/polling-confirmation.js +93 -0
- package/dist/shared/blockchain/polling-confirmation.js.map +1 -0
- package/dist/shared/blockchain/race-confirmation.d.ts +70 -0
- package/dist/shared/blockchain/race-confirmation.d.ts.map +1 -0
- package/dist/shared/blockchain/race-confirmation.js +197 -0
- package/dist/shared/blockchain/race-confirmation.js.map +1 -0
- package/dist/shared/blockchain/shared-ws-provider.d.ts +156 -0
- package/dist/shared/blockchain/shared-ws-provider.d.ts.map +1 -0
- package/dist/shared/blockchain/shared-ws-provider.js +629 -0
- package/dist/shared/blockchain/shared-ws-provider.js.map +1 -0
- package/dist/shared/blockchain/transaction-handler-factory.d.ts +30 -0
- package/dist/shared/blockchain/transaction-handler-factory.d.ts.map +1 -0
- package/dist/shared/blockchain/transaction-handler-factory.js +115 -0
- package/dist/shared/blockchain/transaction-handler-factory.js.map +1 -0
- package/dist/shared/config/development.d.ts +3 -0
- package/dist/shared/config/development.d.ts.map +1 -0
- package/dist/shared/config/development.js +155 -0
- package/dist/shared/config/development.js.map +1 -0
- package/dist/shared/config/index.d.ts +7 -0
- package/dist/shared/config/index.d.ts.map +1 -0
- package/dist/shared/config/index.js +86 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/json-config-loader.d.ts +18 -0
- package/dist/shared/config/json-config-loader.d.ts.map +1 -0
- package/dist/shared/config/json-config-loader.js +149 -0
- package/dist/shared/config/json-config-loader.js.map +1 -0
- package/dist/shared/config/network-manager.d.ts +87 -0
- package/dist/shared/config/network-manager.d.ts.map +1 -0
- package/dist/shared/config/network-manager.js +282 -0
- package/dist/shared/config/network-manager.js.map +1 -0
- package/dist/shared/config/production.d.ts +3 -0
- package/dist/shared/config/production.d.ts.map +1 -0
- package/dist/shared/config/production.js +156 -0
- package/dist/shared/config/production.js.map +1 -0
- package/dist/shared/config/staging.d.ts +3 -0
- package/dist/shared/config/staging.d.ts.map +1 -0
- package/dist/shared/config/staging.js +150 -0
- package/dist/shared/config/staging.js.map +1 -0
- package/dist/shared/database/bs-price-repository.d.ts +34 -0
- package/dist/shared/database/bs-price-repository.d.ts.map +1 -0
- package/dist/shared/database/bs-price-repository.js +86 -0
- package/dist/shared/database/bs-price-repository.js.map +1 -0
- package/dist/shared/database/index.d.ts +3 -0
- package/dist/shared/database/index.d.ts.map +1 -0
- package/dist/shared/database/index.js +8 -0
- package/dist/shared/database/index.js.map +1 -0
- package/dist/shared/database/quote-center-client.d.ts +23 -0
- package/dist/shared/database/quote-center-client.d.ts.map +1 -0
- package/dist/shared/database/quote-center-client.js +75 -0
- package/dist/shared/database/quote-center-client.js.map +1 -0
- package/dist/shared/interfaces.d.ts +56 -0
- package/dist/shared/interfaces.d.ts.map +1 -0
- package/dist/shared/interfaces.js +3 -0
- package/dist/shared/interfaces.js.map +1 -0
- package/dist/shared/leadership/heartbeat-service.d.ts +5 -0
- package/dist/shared/leadership/heartbeat-service.d.ts.map +1 -0
- package/dist/shared/leadership/heartbeat-service.js +14 -0
- package/dist/shared/leadership/heartbeat-service.js.map +1 -0
- package/dist/shared/leadership/index.d.ts +5 -0
- package/dist/shared/leadership/index.d.ts.map +1 -0
- package/dist/shared/leadership/index.js +21 -0
- package/dist/shared/leadership/index.js.map +1 -0
- package/dist/shared/leadership/instance-id.d.ts +2 -0
- package/dist/shared/leadership/instance-id.d.ts.map +1 -0
- package/dist/shared/leadership/instance-id.js +16 -0
- package/dist/shared/leadership/instance-id.js.map +1 -0
- package/dist/shared/leadership/leader-elector.d.ts +26 -0
- package/dist/shared/leadership/leader-elector.d.ts.map +1 -0
- package/dist/shared/leadership/leader-elector.js +162 -0
- package/dist/shared/leadership/leader-elector.js.map +1 -0
- package/dist/shared/leadership/types.d.ts +15 -0
- package/dist/shared/leadership/types.d.ts.map +1 -0
- package/dist/shared/leadership/types.js +3 -0
- package/dist/shared/leadership/types.js.map +1 -0
- package/dist/shared/queue/index.d.ts +2 -0
- package/dist/shared/queue/index.d.ts.map +1 -0
- package/dist/shared/queue/index.js +6 -0
- package/dist/shared/queue/index.js.map +1 -0
- package/dist/shared/queue/task-creator.d.ts +17 -0
- package/dist/shared/queue/task-creator.d.ts.map +1 -0
- package/dist/shared/queue/task-creator.js +133 -0
- package/dist/shared/queue/task-creator.js.map +1 -0
- package/dist/shared/redis/client.d.ts +137 -0
- package/dist/shared/redis/client.d.ts.map +1 -0
- package/dist/shared/redis/client.js +722 -0
- package/dist/shared/redis/client.js.map +1 -0
- package/dist/shared/redis/funding-fee-repository.d.ts +21 -0
- package/dist/shared/redis/funding-fee-repository.d.ts.map +1 -0
- package/dist/shared/redis/funding-fee-repository.js +151 -0
- package/dist/shared/redis/funding-fee-repository.js.map +1 -0
- package/dist/shared/redis/index.d.ts +9 -0
- package/dist/shared/redis/index.d.ts.map +1 -0
- package/dist/shared/redis/index.js +23 -0
- package/dist/shared/redis/index.js.map +1 -0
- package/dist/shared/redis/limit-order-repository.d.ts +131 -0
- package/dist/shared/redis/limit-order-repository.d.ts.map +1 -0
- package/dist/shared/redis/limit-order-repository.js +485 -0
- package/dist/shared/redis/limit-order-repository.js.map +1 -0
- package/dist/shared/redis/order-repository.d.ts +89 -0
- package/dist/shared/redis/order-repository.d.ts.map +1 -0
- package/dist/shared/redis/order-repository.js +491 -0
- package/dist/shared/redis/order-repository.js.map +1 -0
- package/dist/shared/redis/order-staging-repository.d.ts +155 -0
- package/dist/shared/redis/order-staging-repository.d.ts.map +1 -0
- package/dist/shared/redis/order-staging-repository.js +264 -0
- package/dist/shared/redis/order-staging-repository.js.map +1 -0
- package/dist/shared/redis/quote-center-redis-client.d.ts +63 -0
- package/dist/shared/redis/quote-center-redis-client.d.ts.map +1 -0
- package/dist/shared/redis/quote-center-redis-client.js +368 -0
- package/dist/shared/redis/quote-center-redis-client.js.map +1 -0
- package/dist/shared/redis/redeem-signature-repository.d.ts +100 -0
- package/dist/shared/redis/redeem-signature-repository.d.ts.map +1 -0
- package/dist/shared/redis/redeem-signature-repository.js +285 -0
- package/dist/shared/redis/redeem-signature-repository.js.map +1 -0
- package/dist/shared/redis/stuck-task-repository.d.ts +70 -0
- package/dist/shared/redis/stuck-task-repository.d.ts.map +1 -0
- package/dist/shared/redis/stuck-task-repository.js +94 -0
- package/dist/shared/redis/stuck-task-repository.js.map +1 -0
- package/dist/shared/redis/task-repository.d.ts +34 -0
- package/dist/shared/redis/task-repository.d.ts.map +1 -0
- package/dist/shared/redis/task-repository.js +191 -0
- package/dist/shared/redis/task-repository.js.map +1 -0
- package/dist/shared/schema/index.d.ts +7 -0
- package/dist/shared/schema/index.d.ts.map +1 -0
- package/dist/shared/schema/index.js +20 -0
- package/dist/shared/schema/index.js.map +1 -0
- package/dist/shared/services/funding-fee-segment-calculator.d.ts +87 -0
- package/dist/shared/services/funding-fee-segment-calculator.d.ts.map +1 -0
- package/dist/shared/services/funding-fee-segment-calculator.js +376 -0
- package/dist/shared/services/funding-fee-segment-calculator.js.map +1 -0
- package/dist/shared/services/hedge-request-validator.d.ts +25 -0
- package/dist/shared/services/hedge-request-validator.d.ts.map +1 -0
- package/dist/shared/services/hedge-request-validator.js +87 -0
- package/dist/shared/services/hedge-request-validator.js.map +1 -0
- package/dist/shared/services/hyperliquid-client.d.ts +46 -0
- package/dist/shared/services/hyperliquid-client.d.ts.map +1 -0
- package/dist/shared/services/hyperliquid-client.js +149 -0
- package/dist/shared/services/hyperliquid-client.js.map +1 -0
- package/dist/shared/services/job-tracker.d.ts +69 -0
- package/dist/shared/services/job-tracker.d.ts.map +1 -0
- package/dist/shared/services/job-tracker.js +288 -0
- package/dist/shared/services/job-tracker.js.map +1 -0
- package/dist/shared/services/limit-order-execution-service.d.ts +161 -0
- package/dist/shared/services/limit-order-execution-service.d.ts.map +1 -0
- package/dist/shared/services/limit-order-execution-service.js +2477 -0
- package/dist/shared/services/limit-order-execution-service.js.map +1 -0
- package/dist/shared/services/limit-order-validator.d.ts +49 -0
- package/dist/shared/services/limit-order-validator.d.ts.map +1 -0
- package/dist/shared/services/limit-order-validator.js +266 -0
- package/dist/shared/services/limit-order-validator.js.map +1 -0
- package/dist/shared/services/liquidate-request-validator.d.ts +18 -0
- package/dist/shared/services/liquidate-request-validator.d.ts.map +1 -0
- package/dist/shared/services/liquidate-request-validator.js +323 -0
- package/dist/shared/services/liquidate-request-validator.js.map +1 -0
- package/dist/shared/services/liquidation-execution-service.d.ts +73 -0
- package/dist/shared/services/liquidation-execution-service.d.ts.map +1 -0
- package/dist/shared/services/liquidation-execution-service.js +1956 -0
- package/dist/shared/services/liquidation-execution-service.js.map +1 -0
- package/dist/shared/services/managed-order-builder.d.ts +91 -0
- package/dist/shared/services/managed-order-builder.d.ts.map +1 -0
- package/dist/shared/services/managed-order-builder.js +530 -0
- package/dist/shared/services/managed-order-builder.js.map +1 -0
- package/dist/shared/services/nonce-manager.d.ts +85 -0
- package/dist/shared/services/nonce-manager.d.ts.map +1 -0
- package/dist/shared/services/nonce-manager.js +253 -0
- package/dist/shared/services/nonce-manager.js.map +1 -0
- package/dist/shared/services/option-pricing.service.d.ts +26 -0
- package/dist/shared/services/option-pricing.service.d.ts.map +1 -0
- package/dist/shared/services/option-pricing.service.js +209 -0
- package/dist/shared/services/option-pricing.service.js.map +1 -0
- package/dist/shared/services/order-operation-determiner.d.ts +102 -0
- package/dist/shared/services/order-operation-determiner.d.ts.map +1 -0
- package/dist/shared/services/order-operation-determiner.js +582 -0
- package/dist/shared/services/order-operation-determiner.js.map +1 -0
- package/dist/shared/services/order-staging.service.d.ts +128 -0
- package/dist/shared/services/order-staging.service.d.ts.map +1 -0
- package/dist/shared/services/order-staging.service.js +859 -0
- package/dist/shared/services/order-staging.service.js.map +1 -0
- package/dist/shared/services/order-validation.service.d.ts +22 -0
- package/dist/shared/services/order-validation.service.d.ts.map +1 -0
- package/dist/shared/services/order-validation.service.js +118 -0
- package/dist/shared/services/order-validation.service.js.map +1 -0
- package/dist/shared/services/order-validator.d.ts +61 -0
- package/dist/shared/services/order-validator.d.ts.map +1 -0
- package/dist/shared/services/order-validator.js +311 -0
- package/dist/shared/services/order-validator.js.map +1 -0
- package/dist/shared/services/perps-order-execution-service.d.ts +48 -0
- package/dist/shared/services/perps-order-execution-service.d.ts.map +1 -0
- package/dist/shared/services/perps-order-execution-service.js +922 -0
- package/dist/shared/services/perps-order-execution-service.js.map +1 -0
- package/dist/shared/services/perps-order-validator.d.ts +22 -0
- package/dist/shared/services/perps-order-validator.d.ts.map +1 -0
- package/dist/shared/services/perps-order-validator.js +137 -0
- package/dist/shared/services/perps-order-validator.js.map +1 -0
- package/dist/shared/services/price-resolver.service.d.ts +44 -0
- package/dist/shared/services/price-resolver.service.d.ts.map +1 -0
- package/dist/shared/services/price-resolver.service.js +140 -0
- package/dist/shared/services/price-resolver.service.js.map +1 -0
- package/dist/shared/services/pyth-historical-price.service.d.ts +19 -0
- package/dist/shared/services/pyth-historical-price.service.d.ts.map +1 -0
- package/dist/shared/services/pyth-historical-price.service.js +136 -0
- package/dist/shared/services/pyth-historical-price.service.js.map +1 -0
- package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.d.ts +84 -0
- package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.d.ts.map +1 -0
- package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.js +476 -0
- package/dist/shared/services/redeem-rules/daily-withdraw-limit-rule.js.map +1 -0
- package/dist/shared/services/redeem-rules/index.d.ts +4 -0
- package/dist/shared/services/redeem-rules/index.d.ts.map +1 -0
- package/dist/shared/services/redeem-rules/index.js +20 -0
- package/dist/shared/services/redeem-rules/index.js.map +1 -0
- package/dist/shared/services/redeem-rules/rule-engine.d.ts +50 -0
- package/dist/shared/services/redeem-rules/rule-engine.d.ts.map +1 -0
- package/dist/shared/services/redeem-rules/rule-engine.js +178 -0
- package/dist/shared/services/redeem-rules/rule-engine.js.map +1 -0
- package/dist/shared/services/redeem-rules/types.d.ts +69 -0
- package/dist/shared/services/redeem-rules/types.d.ts.map +1 -0
- package/dist/shared/services/redeem-rules/types.js +3 -0
- package/dist/shared/services/redeem-rules/types.js.map +1 -0
- package/dist/shared/services/sse-event-manager.d.ts +77 -0
- package/dist/shared/services/sse-event-manager.d.ts.map +1 -0
- package/dist/shared/services/sse-event-manager.js +286 -0
- package/dist/shared/services/sse-event-manager.js.map +1 -0
- package/dist/shared/services/transaction-executor.d.ts +74 -0
- package/dist/shared/services/transaction-executor.d.ts.map +1 -0
- package/dist/shared/services/transaction-executor.js +190 -0
- package/dist/shared/services/transaction-executor.js.map +1 -0
- package/dist/shared/services/vault-init.service.d.ts +41 -0
- package/dist/shared/services/vault-init.service.d.ts.map +1 -0
- package/dist/shared/services/vault-init.service.js +345 -0
- package/dist/shared/services/vault-init.service.js.map +1 -0
- package/dist/shared/services/vault-redeem.service.d.ts +68 -0
- package/dist/shared/services/vault-redeem.service.d.ts.map +1 -0
- package/dist/shared/services/vault-redeem.service.js +498 -0
- package/dist/shared/services/vault-redeem.service.js.map +1 -0
- package/dist/shared/types/blockchain.d.ts +57 -0
- package/dist/shared/types/blockchain.d.ts.map +1 -0
- package/dist/shared/types/blockchain.js +3 -0
- package/dist/shared/types/blockchain.js.map +1 -0
- package/dist/shared/types/config.d.ts +186 -0
- package/dist/shared/types/config.d.ts.map +1 -0
- package/dist/shared/types/config.js +3 -0
- package/dist/shared/types/config.js.map +1 -0
- package/dist/shared/types/contract.d.ts +165 -0
- package/dist/shared/types/contract.d.ts.map +1 -0
- package/dist/shared/types/contract.js +14 -0
- package/dist/shared/types/contract.js.map +1 -0
- package/dist/shared/types/debug.d.ts +57 -0
- package/dist/shared/types/debug.d.ts.map +1 -0
- package/dist/shared/types/debug.js +3 -0
- package/dist/shared/types/debug.js.map +1 -0
- package/dist/shared/types/errors.d.ts +64 -0
- package/dist/shared/types/errors.d.ts.map +1 -0
- package/dist/shared/types/errors.js +176 -0
- package/dist/shared/types/errors.js.map +1 -0
- package/dist/shared/types/execution-context.d.ts +11 -0
- package/dist/shared/types/execution-context.d.ts.map +1 -0
- package/dist/shared/types/execution-context.js +3 -0
- package/dist/shared/types/execution-context.js.map +1 -0
- package/dist/shared/types/funding-fee.d.ts +50 -0
- package/dist/shared/types/funding-fee.d.ts.map +1 -0
- package/dist/shared/types/funding-fee.js +3 -0
- package/dist/shared/types/funding-fee.js.map +1 -0
- package/dist/shared/types/hedge-position.d.ts +184 -0
- package/dist/shared/types/hedge-position.d.ts.map +1 -0
- package/dist/shared/types/hedge-position.js +4 -0
- package/dist/shared/types/hedge-position.js.map +1 -0
- package/dist/shared/types/index.d.ts +32 -0
- package/dist/shared/types/index.d.ts.map +1 -0
- package/dist/shared/types/index.js +28 -0
- package/dist/shared/types/index.js.map +1 -0
- package/dist/shared/types/job.d.ts +55 -0
- package/dist/shared/types/job.d.ts.map +1 -0
- package/dist/shared/types/job.js +3 -0
- package/dist/shared/types/job.js.map +1 -0
- package/dist/shared/types/limit-order.d.ts +184 -0
- package/dist/shared/types/limit-order.d.ts.map +1 -0
- package/dist/shared/types/limit-order.js +55 -0
- package/dist/shared/types/limit-order.js.map +1 -0
- package/dist/shared/types/liquidation.d.ts +55 -0
- package/dist/shared/types/liquidation.d.ts.map +1 -0
- package/dist/shared/types/liquidation.js +3 -0
- package/dist/shared/types/liquidation.js.map +1 -0
- package/dist/shared/types/monitoring.d.ts +123 -0
- package/dist/shared/types/monitoring.d.ts.map +1 -0
- package/dist/shared/types/monitoring.js +3 -0
- package/dist/shared/types/monitoring.js.map +1 -0
- package/dist/shared/types/network-config.d.ts +107 -0
- package/dist/shared/types/network-config.d.ts.map +1 -0
- package/dist/shared/types/network-config.js +3 -0
- package/dist/shared/types/network-config.js.map +1 -0
- package/dist/shared/types/order.d.ts +47 -0
- package/dist/shared/types/order.d.ts.map +1 -0
- package/dist/shared/types/order.js +3 -0
- package/dist/shared/types/order.js.map +1 -0
- package/dist/shared/types/perps-liquidation.d.ts +242 -0
- package/dist/shared/types/perps-liquidation.d.ts.map +1 -0
- package/dist/shared/types/perps-liquidation.js +3 -0
- package/dist/shared/types/perps-liquidation.js.map +1 -0
- package/dist/shared/types/perps-order.d.ts +57 -0
- package/dist/shared/types/perps-order.d.ts.map +1 -0
- package/dist/shared/types/perps-order.js +3 -0
- package/dist/shared/types/perps-order.js.map +1 -0
- package/dist/shared/types/price.d.ts +45 -0
- package/dist/shared/types/price.d.ts.map +1 -0
- package/dist/shared/types/price.js +3 -0
- package/dist/shared/types/price.js.map +1 -0
- package/dist/shared/types/task.d.ts +129 -0
- package/dist/shared/types/task.d.ts.map +1 -0
- package/dist/shared/types/task.js +69 -0
- package/dist/shared/types/task.js.map +1 -0
- package/dist/shared/types/transaction-handler.d.ts +72 -0
- package/dist/shared/types/transaction-handler.d.ts.map +1 -0
- package/dist/shared/types/transaction-handler.js +3 -0
- package/dist/shared/types/transaction-handler.js.map +1 -0
- package/dist/shared/types/transaction-timing.d.ts +106 -0
- package/dist/shared/types/transaction-timing.d.ts.map +1 -0
- package/dist/shared/types/transaction-timing.js +3 -0
- package/dist/shared/types/transaction-timing.js.map +1 -0
- package/dist/shared/utils/effect-retry-policy.d.ts +134 -0
- package/dist/shared/utils/effect-retry-policy.d.ts.map +1 -0
- package/dist/shared/utils/effect-retry-policy.js +260 -0
- package/dist/shared/utils/effect-retry-policy.js.map +1 -0
- package/dist/shared/utils/error-classifier.d.ts +45 -0
- package/dist/shared/utils/error-classifier.d.ts.map +1 -0
- package/dist/shared/utils/error-classifier.js +403 -0
- package/dist/shared/utils/error-classifier.js.map +1 -0
- package/dist/shared/utils/error-handler.d.ts +47 -0
- package/dist/shared/utils/error-handler.d.ts.map +1 -0
- package/dist/shared/utils/error-handler.js +221 -0
- package/dist/shared/utils/error-handler.js.map +1 -0
- package/dist/shared/utils/event-parser-registry.d.ts +265 -0
- package/dist/shared/utils/event-parser-registry.d.ts.map +1 -0
- package/dist/shared/utils/event-parser-registry.js +894 -0
- package/dist/shared/utils/event-parser-registry.js.map +1 -0
- package/dist/shared/utils/event-parser-service.d.ts +62 -0
- package/dist/shared/utils/event-parser-service.d.ts.map +1 -0
- package/dist/shared/utils/event-parser-service.js +187 -0
- package/dist/shared/utils/event-parser-service.js.map +1 -0
- package/dist/shared/utils/fastify.d.ts +10 -0
- package/dist/shared/utils/fastify.d.ts.map +1 -0
- package/dist/shared/utils/fastify.js +53 -0
- package/dist/shared/utils/fastify.js.map +1 -0
- package/dist/shared/utils/flashblocks-mapper.d.ts +32 -0
- package/dist/shared/utils/flashblocks-mapper.d.ts.map +1 -0
- package/dist/shared/utils/flashblocks-mapper.js +414 -0
- package/dist/shared/utils/flashblocks-mapper.js.map +1 -0
- package/dist/shared/utils/funding-fee-calculator.d.ts +34 -0
- package/dist/shared/utils/funding-fee-calculator.d.ts.map +1 -0
- package/dist/shared/utils/funding-fee-calculator.js +121 -0
- package/dist/shared/utils/funding-fee-calculator.js.map +1 -0
- package/dist/shared/utils/health-calculator.d.ts +102 -0
- package/dist/shared/utils/health-calculator.d.ts.map +1 -0
- package/dist/shared/utils/health-calculator.js +341 -0
- package/dist/shared/utils/health-calculator.js.map +1 -0
- package/dist/shared/utils/hedge-parameter-converter.d.ts +41 -0
- package/dist/shared/utils/hedge-parameter-converter.d.ts.map +1 -0
- package/dist/shared/utils/hedge-parameter-converter.js +168 -0
- package/dist/shared/utils/hedge-parameter-converter.js.map +1 -0
- package/dist/shared/utils/index.d.ts +7 -0
- package/dist/shared/utils/index.d.ts.map +1 -0
- package/dist/shared/utils/index.js +29 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/logger.d.ts +57 -0
- package/dist/shared/utils/logger.d.ts.map +1 -0
- package/dist/shared/utils/logger.js +462 -0
- package/dist/shared/utils/logger.js.map +1 -0
- package/dist/shared/utils/price-bundle-helper.d.ts +60 -0
- package/dist/shared/utils/price-bundle-helper.d.ts.map +1 -0
- package/dist/shared/utils/price-bundle-helper.js +213 -0
- package/dist/shared/utils/price-bundle-helper.js.map +1 -0
- package/dist/shared/utils/pyth-price-normalizer.d.ts +18 -0
- package/dist/shared/utils/pyth-price-normalizer.d.ts.map +1 -0
- package/dist/shared/utils/pyth-price-normalizer.js +30 -0
- package/dist/shared/utils/pyth-price-normalizer.js.map +1 -0
- package/dist/shared/utils/status-reporter.d.ts +29 -0
- package/dist/shared/utils/status-reporter.d.ts.map +1 -0
- package/dist/shared/utils/status-reporter.js +168 -0
- package/dist/shared/utils/status-reporter.js.map +1 -0
- package/dist/shared/utils/structured-logger.d.ts +733 -0
- package/dist/shared/utils/structured-logger.d.ts.map +1 -0
- package/dist/shared/utils/structured-logger.js +1538 -0
- package/dist/shared/utils/structured-logger.js.map +1 -0
- package/dist/shared/utils/version.d.ts +2 -0
- package/dist/shared/utils/version.d.ts.map +1 -0
- package/dist/shared/utils/version.js +22 -0
- package/dist/shared/utils/version.js.map +1 -0
- package/dist/shared/utils/writer-config-matcher.d.ts +9 -0
- package/dist/shared/utils/writer-config-matcher.d.ts.map +1 -0
- package/dist/shared/utils/writer-config-matcher.js +62 -0
- package/dist/shared/utils/writer-config-matcher.js.map +1 -0
- package/docs/API_ORDER_CREATE.md +1032 -0
- package/docs/API_REDEEM_QUOTA.md +201 -0
- package/docs/API_VAULT_INIT.md +452 -0
- package/docs/API_VAULT_REDEEM.md +449 -0
- package/docs/CONTRACT_AUDIT_FLOW.md +512 -0
- package/docs/ERROR_HANDLING_AND_RETRY_FLOW.md +458 -0
- package/docs/FRONTEND_AI_PPO_OTM_BRIEF.md +122 -0
- package/docs/FRONTEND_ERROR_CODES.md +90 -0
- package/docs/FUNDING_FEE_API_REVIEW.md +86 -0
- package/docs/MONITORING_SYSTEM.md +502 -0
- package/docs/MONITORING_TROUBLESHOOTING.md +316 -0
- package/docs/ORDER_API_FLOW.md +972 -0
- package/docs/ORDER_EXECUTION_MAPPING.md +509 -0
- package/docs/Order_SSE_INTEGRATION.md +788 -0
- package/docs/api-server-integration.md +699 -0
- package/docs/architecture.md +1093 -0
- package/docs/dispatcher-clearing-steps.md +80 -0
- package/docs/flashblocks-event-implementation.md +196 -0
- package/docs/funding-fee-calculation.md +268 -0
- package/docs/health-factor-calculation.md +152 -0
- package/docs/manager-api-examples.md +3112 -0
- package/docs/perps-order-flow.md +586 -0
- package/docs/plans/2025-03-01-skill-cli-requirements.md +130 -0
- package/docs/plans/2026-02-03-test-infrastructure-refactor.md +1945 -0
- package/docs/price-reading-flow.md +176 -0
- package/docs/requirements.md +326 -0
- package/docs/sync-service-steps.md +72 -0
- package/docs/testing-guide.md +585 -0
- package/docs/worker-execution-steps.md +71 -0
- package/env.sample +191 -0
- package/fly.toml +23 -0
- package/fly_dispatcher.toml +20 -0
- package/fly_jasper_dev.toml +34 -0
- package/fly_manager.toml +32 -0
- package/fly_sync.toml +17 -0
- package/fly_worker.toml +17 -0
- package/jest.config.js +27 -0
- package/package.json +99 -0
- package/playwright/README.md +129 -0
- package/playwright/scenario-1-system-overall-health.js +32 -0
- package/playwright/scenario-2-sync-health.js +30 -0
- package/playwright/scenario-3-dispatcher-health.js +30 -0
- package/playwright/scenario-4-worker-health.js +21 -0
- package/playwright/scenario-5-manager-health.js +32 -0
- package/playwright/scenario-6-worker-performance.js +35 -0
- package/playwright/scenario-7-sync-performance.js +32 -0
- package/playwright/scenario-8-dispatcher-performance.js +32 -0
- package/scripts/analyze-queue-backlog.ts +108 -0
- package/scripts/check-bullmq-status.ts +89 -0
- package/scripts/check-failed-tasks.ts +91 -0
- package/scripts/check-funding-rate-tasks.ts +62 -0
- package/scripts/check-liqprice-performance-stats.ts +101 -0
- package/scripts/check-queue-status.ts +65 -0
- package/scripts/cleanup-dirty-limit-orders.ts +212 -0
- package/scripts/cleanup-orphaned-timestamps.ts +65 -0
- package/scripts/clear-queue.ts +136 -0
- package/scripts/debug-limit-order-operation.ts +369 -0
- package/scripts/debug-redeem-transfer-query.ts +345 -0
- package/scripts/debug-writer-config.ts +157 -0
- package/scripts/liquidate-hedge-option-now.ts +425 -0
- package/scripts/liquidate-now.ts +517 -0
- package/scripts/monitor-sse-connection.ts +155 -0
- package/scripts/multicall-liquidation-price-benchmark.ts +759 -0
- package/scripts/redis-backup.ts +80 -0
- package/scripts/redis-resync-and-print-hf.ts +280 -0
- package/scripts/redis-resync-and-print-liquidation.ts +275 -0
- package/scripts/sync-funding-fees.ts +385 -0
- package/scripts/test-batch-price-fetch.ts +109 -0
- package/scripts/test-dispatcher-flow.ts +611 -0
- package/scripts/test-dispatcher-hedge-scan.ts +450 -0
- package/scripts/test-flashblocks-mapper.ts +144 -0
- package/scripts/test-funding-fee-flow.ts +166 -0
- package/scripts/test-funding-rate-dispatch.ts +74 -0
- package/scripts/test-gas-fee-comparison.ts +113 -0
- package/scripts/test-get-liquidate-request.ts +146 -0
- package/scripts/test-hedge-add-size.ts +228 -0
- package/scripts/test-hedge-close-size.ts +257 -0
- package/scripts/test-hedge-option-flow.ts +79 -0
- package/scripts/test-hedge-option-liquidation.ts +300 -0
- package/scripts/test-hedge-worker-execution.ts +75 -0
- package/scripts/test-hf-update-dispatch.ts +132 -0
- package/scripts/test-limit-order-execute.ts +1121 -0
- package/scripts/test-liquidation-price-update.ts +142 -0
- package/scripts/test-nonce-query.ts +143 -0
- package/scripts/test-option-quote.ts +261 -0
- package/scripts/test-quote-center-price.ts +152 -0
- package/scripts/test-revert-reason-extraction.ts +205 -0
- package/scripts/test-rpc-rw.ts +946 -0
- package/scripts/test-simplified-liquidation-price.ts +270 -0
- package/scripts/test-user-liquidation.ts +521 -0
- package/scripts/test-websocket-rpc.ts +480 -0
- package/scripts/test-ws-rpc-rw.ts +1208 -0
- package/scripts/test-ws-send-quick.ts +149 -0
- package/scripts/verify-funding-rates.ts +65 -0
- package/scripts/verify-limit-type-update.ts +95 -0
- package/scripts/view-all-orders.ts +779 -0
- package/skills/jasper-vault-cli/SKILL.md +205 -0
- package/src/app.ts +101 -0
- package/src/services/dispatcher/duplicate-guard.ts +12 -0
- package/src/services/dispatcher/hedge-option-scanner.ts +87 -0
- package/src/services/dispatcher/hedge-option-task-creator.ts +75 -0
- package/src/services/dispatcher/index.ts +869 -0
- package/src/services/dispatcher/limit-order-scanner.ts +993 -0
- package/src/services/dispatcher/limit-order-task-creator.ts +158 -0
- package/src/services/dispatcher/order-scanner.ts +15 -0
- package/src/services/dispatcher/queue-manager.ts +48 -0
- package/src/services/dispatcher/task-creator.ts +15 -0
- package/src/services/manager/api-server.ts +350 -0
- package/src/services/manager/index.ts +121 -0
- package/src/services/manager/routes/funding-fee.ts +857 -0
- package/src/services/manager/routes/funding-rates.ts +431 -0
- package/src/services/manager/routes/hedge.ts +455 -0
- package/src/services/manager/routes/job-status.ts +104 -0
- package/src/services/manager/routes/job-stream.ts +274 -0
- package/src/services/manager/routes/limit-order.ts +603 -0
- package/src/services/manager/routes/liquidation.ts +529 -0
- package/src/services/manager/routes/order.ts +741 -0
- package/src/services/manager/routes/orders.ts +412 -0
- package/src/services/manager/routes/perps-order-creation.ts +641 -0
- package/src/services/manager/routes/status.ts +254 -0
- package/src/services/manager/routes/vault-init.ts +359 -0
- package/src/services/manager/routes/vault-redeem.ts +453 -0
- package/src/services/manager/service-controller.ts +77 -0
- package/src/services/manager/status-monitor.ts +259 -0
- package/src/services/manager/types/limit-order-types.ts +96 -0
- package/src/services/manager/types/order-types.ts +61 -0
- package/src/services/manager/types/perps-order-types.ts +77 -0
- package/src/services/manager/types/vault-init-types.ts +81 -0
- package/src/services/manager/types/vault-redeem-types.ts +124 -0
- package/src/services/manager/types.ts +270 -0
- package/src/services/sync/blockscholes-price-client.ts +880 -0
- package/src/services/sync/data-synchronizer.ts +969 -0
- package/src/services/sync/funding-fee-task-dispatcher.ts +94 -0
- package/src/services/sync/funding-rate-task-dispatcher.ts +117 -0
- package/src/services/sync/index.ts +290 -0
- package/src/services/sync/liquidation-price-task-dispatcher.ts +73 -0
- package/src/services/sync/order-generator.ts +69 -0
- package/src/services/sync/pyth-client.ts +215 -0
- package/src/services/sync/queries.ts +522 -0
- package/src/services/sync/run-batch-loader.ts +39 -0
- package/src/services/sync/subgraph-client.ts +238 -0
- package/src/services/sync/subgraph-order-generator.ts +148 -0
- package/src/services/sync/websocket-client.ts +88 -0
- package/src/services/worker/contract-client.ts +6922 -0
- package/src/services/worker/funding-fee-processor.ts +401 -0
- package/src/services/worker/funding-fee-provider.ts +242 -0
- package/src/services/worker/funding-fee-update-executor.ts +153 -0
- package/src/services/worker/gas-manager.ts +43 -0
- package/src/services/worker/health-factor-processor.ts +172 -0
- package/src/services/worker/index.ts +288 -0
- package/src/services/worker/liquidation-executor.ts +29 -0
- package/src/services/worker/liquidation-price-encoder.ts +110 -0
- package/src/services/worker/liquidation-price-processor.ts +353 -0
- package/src/services/worker/price-adapter.ts +52 -0
- package/src/services/worker/production-liquidation-executor.ts +59 -0
- package/src/services/worker/pyth-price-service.ts +678 -0
- package/src/services/worker/signature-service.ts +196 -0
- package/src/services/worker/task-consumer.ts +3181 -0
- package/src/services/worker/transaction-builder.ts +359 -0
- package/src/services/worker/transaction-sender.ts +632 -0
- package/src/shared/adapters/contract-liquidation-adapter.ts +304 -0
- package/src/shared/adapters/price/index.ts +6 -0
- package/src/shared/adapters/price/price-adapter-factory.ts +170 -0
- package/src/shared/adapters/price/pyth-price-adapter.ts +607 -0
- package/src/shared/adapters/price/quote-center-price-adapter.ts +1682 -0
- package/src/shared/adapters/price/types.ts +197 -0
- package/src/shared/blockchain/alchemy-bundler-handler.ts +473 -0
- package/src/shared/blockchain/coinbase-bundler-handler.ts +799 -0
- package/src/shared/blockchain/dynamic-gas-manager.ts +195 -0
- package/src/shared/blockchain/eoa-transaction-handler.ts +1040 -0
- package/src/shared/blockchain/flashblocks-listener.ts +262 -0
- package/src/shared/blockchain/polling-confirmation.ts +122 -0
- package/src/shared/blockchain/race-confirmation.ts +268 -0
- package/src/shared/blockchain/shared-ws-provider.ts +766 -0
- package/src/shared/blockchain/transaction-handler-factory.ts +142 -0
- package/src/shared/config/development.ts +154 -0
- package/src/shared/config/index.ts +79 -0
- package/src/shared/config/json-config-loader.ts +140 -0
- package/src/shared/config/network-manager.ts +343 -0
- package/src/shared/config/production.ts +155 -0
- package/src/shared/config/staging.ts +149 -0
- package/src/shared/database/bs-price-repository.ts +98 -0
- package/src/shared/database/index.ts +3 -0
- package/src/shared/database/quote-center-client.ts +88 -0
- package/src/shared/interfaces.ts +63 -0
- package/src/shared/leadership/heartbeat-service.ts +20 -0
- package/src/shared/leadership/index.ts +5 -0
- package/src/shared/leadership/instance-id.ts +10 -0
- package/src/shared/leadership/leader-elector.ts +180 -0
- package/src/shared/leadership/types.ts +18 -0
- package/src/shared/queue/index.ts +1 -0
- package/src/shared/queue/task-creator.ts +162 -0
- package/src/shared/redis/client.ts +836 -0
- package/src/shared/redis/funding-fee-repository.ts +183 -0
- package/src/shared/redis/index.ts +18 -0
- package/src/shared/redis/limit-order-repository.ts +596 -0
- package/src/shared/redis/order-repository.ts +611 -0
- package/src/shared/redis/order-staging-repository.ts +374 -0
- package/src/shared/redis/quote-center-redis-client.ts +439 -0
- package/src/shared/redis/redeem-signature-repository.ts +351 -0
- package/src/shared/redis/stuck-task-repository.ts +113 -0
- package/src/shared/redis/task-repository.ts +223 -0
- package/src/shared/schema/index.ts +24 -0
- package/src/shared/services/funding-fee-segment-calculator.ts +456 -0
- package/src/shared/services/hedge-request-validator.ts +102 -0
- package/src/shared/services/hyperliquid-client.ts +183 -0
- package/src/shared/services/job-tracker.ts +344 -0
- package/src/shared/services/limit-order-execution-service.ts +3149 -0
- package/src/shared/services/limit-order-validator.ts +308 -0
- package/src/shared/services/liquidate-request-validator.ts +399 -0
- package/src/shared/services/liquidation-execution-service.ts +2304 -0
- package/src/shared/services/managed-order-builder.ts +646 -0
- package/src/shared/services/nonce-manager.ts +280 -0
- package/src/shared/services/option-pricing.service.ts +282 -0
- package/src/shared/services/order-operation-determiner.ts +681 -0
- package/src/shared/services/order-staging.service.ts +1123 -0
- package/src/shared/services/order-validation.service.ts +150 -0
- package/src/shared/services/order-validator.ts +350 -0
- package/src/shared/services/perps-order-execution-service.ts +1105 -0
- package/src/shared/services/perps-order-validator.ts +175 -0
- package/src/shared/services/price-resolver.service.ts +160 -0
- package/src/shared/services/pyth-historical-price.service.ts +189 -0
- package/src/shared/services/redeem-rules/daily-withdraw-limit-rule.ts +625 -0
- package/src/shared/services/redeem-rules/index.ts +4 -0
- package/src/shared/services/redeem-rules/rule-engine.ts +192 -0
- package/src/shared/services/redeem-rules/types.ts +76 -0
- package/src/shared/services/sse-event-manager.ts +350 -0
- package/src/shared/services/transaction-executor.ts +239 -0
- package/src/shared/services/vault-init.service.ts +406 -0
- package/src/shared/services/vault-redeem.service.ts +603 -0
- package/src/shared/types/blockchain.ts +64 -0
- package/src/shared/types/config.ts +199 -0
- package/src/shared/types/contract.ts +186 -0
- package/src/shared/types/debug.ts +57 -0
- package/src/shared/types/errors.ts +174 -0
- package/src/shared/types/execution-context.ts +11 -0
- package/src/shared/types/external-modules.d.ts +15 -0
- package/src/shared/types/funding-fee.ts +54 -0
- package/src/shared/types/hedge-position.ts +204 -0
- package/src/shared/types/index.ts +34 -0
- package/src/shared/types/job.ts +61 -0
- package/src/shared/types/limit-order.ts +228 -0
- package/src/shared/types/liquidation.ts +61 -0
- package/src/shared/types/monitoring.ts +132 -0
- package/src/shared/types/network-config.ts +121 -0
- package/src/shared/types/order.ts +56 -0
- package/src/shared/types/perps-liquidation.ts +283 -0
- package/src/shared/types/perps-order.ts +62 -0
- package/src/shared/types/price.ts +58 -0
- package/src/shared/types/task.ts +167 -0
- package/src/shared/types/transaction-handler.ts +86 -0
- package/src/shared/types/transaction-timing.ts +137 -0
- package/src/shared/utils/effect-retry-policy.ts +355 -0
- package/src/shared/utils/error-classifier.ts +439 -0
- package/src/shared/utils/error-handler.ts +290 -0
- package/src/shared/utils/event-parser-registry.ts +915 -0
- package/src/shared/utils/event-parser-service.ts +242 -0
- package/src/shared/utils/fastify.ts +57 -0
- package/src/shared/utils/flashblocks-mapper.ts +503 -0
- package/src/shared/utils/funding-fee-calculator.ts +194 -0
- package/src/shared/utils/health-calculator.ts +456 -0
- package/src/shared/utils/hedge-parameter-converter.ts +186 -0
- package/src/shared/utils/index.ts +21 -0
- package/src/shared/utils/logger.ts +479 -0
- package/src/shared/utils/price-bundle-helper.ts +261 -0
- package/src/shared/utils/pyth-price-normalizer.ts +31 -0
- package/src/shared/utils/status-reporter.ts +207 -0
- package/src/shared/utils/structured-logger.ts +2250 -0
- package/src/shared/utils/version.ts +21 -0
- package/src/shared/utils/writer-config-matcher.ts +76 -0
- package/tests/README.md +224 -0
- package/tests/integration/config.ts +20 -0
- package/tests/integration/fixtures/historical-params.json +1 -0
- package/tests/integration/order-flow/full-flow.test.ts +381 -0
- package/tests/integration/scripts/fetch-historical-params.ts +199 -0
- package/tests/integration/utils/test-signer.ts +172 -0
- package/tests/reports/health-factor-validation-2025-08-30T15-20-26-876Z.json +116 -0
- package/tests/scripts/run-health-factor-validation.ts +385 -0
- package/tests/setup.ts +57 -0
- package/tests/unit/error-classifier.test.ts +118 -0
- package/tests/unit/health-factor.test.ts +516 -0
- package/tests/unit/limit-order-list.test.ts +183 -0
- package/tests/unit/order-operation-determiner/order-operation-determiner.test.ts +422 -0
- package/tests/unit/retry-handler/retry-handler.test.ts +279 -0
- package/tests/unit/test-data-generator.ts +317 -0
- 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
|
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"]
|
package/Dockerfile.sync
ADDED
|
@@ -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"]
|
package/Dockerfile.test
ADDED
|
@@ -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"]
|