jcc_hyper_tool 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +394 -0
  3. package/dist/cli/confirm.d.ts +2 -0
  4. package/dist/cli/confirm.d.ts.map +1 -0
  5. package/dist/cli/confirm.js +22 -0
  6. package/dist/cli/confirm.js.map +1 -0
  7. package/dist/cli/index.d.ts +3 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +189 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/perpKline.d.ts +19 -0
  12. package/dist/cli/perpKline.d.ts.map +1 -0
  13. package/dist/cli/perpKline.js +39 -0
  14. package/dist/cli/perpKline.js.map +1 -0
  15. package/dist/cli/stateCli.d.ts +3 -0
  16. package/dist/cli/stateCli.d.ts.map +1 -0
  17. package/dist/cli/stateCli.js +158 -0
  18. package/dist/cli/stateCli.js.map +1 -0
  19. package/dist/cli/strategyCli.d.ts +3 -0
  20. package/dist/cli/strategyCli.d.ts.map +1 -0
  21. package/dist/cli/strategyCli.js +198 -0
  22. package/dist/cli/strategyCli.js.map +1 -0
  23. package/dist/cli/tradingCli.d.ts +3 -0
  24. package/dist/cli/tradingCli.d.ts.map +1 -0
  25. package/dist/cli/tradingCli.js +587 -0
  26. package/dist/cli/tradingCli.js.map +1 -0
  27. package/dist/cli/util.d.ts +28 -0
  28. package/dist/cli/util.d.ts.map +1 -0
  29. package/dist/cli/util.js +62 -0
  30. package/dist/cli/util.js.map +1 -0
  31. package/dist/core/config.d.ts +32 -0
  32. package/dist/core/config.d.ts.map +1 -0
  33. package/dist/core/config.js +101 -0
  34. package/dist/core/config.js.map +1 -0
  35. package/dist/core/errors.d.ts +9 -0
  36. package/dist/core/errors.d.ts.map +1 -0
  37. package/dist/core/errors.js +17 -0
  38. package/dist/core/errors.js.map +1 -0
  39. package/dist/core/hyperliquid/asset.d.ts +24 -0
  40. package/dist/core/hyperliquid/asset.d.ts.map +1 -0
  41. package/dist/core/hyperliquid/asset.js +88 -0
  42. package/dist/core/hyperliquid/asset.js.map +1 -0
  43. package/dist/core/hyperliquid/candles.d.ts +24 -0
  44. package/dist/core/hyperliquid/candles.d.ts.map +1 -0
  45. package/dist/core/hyperliquid/candles.js +113 -0
  46. package/dist/core/hyperliquid/candles.js.map +1 -0
  47. package/dist/core/hyperliquid/client.d.ts +36 -0
  48. package/dist/core/hyperliquid/client.d.ts.map +1 -0
  49. package/dist/core/hyperliquid/client.js +92 -0
  50. package/dist/core/hyperliquid/client.js.map +1 -0
  51. package/dist/core/hyperliquid/exchange.d.ts +14 -0
  52. package/dist/core/hyperliquid/exchange.d.ts.map +1 -0
  53. package/dist/core/hyperliquid/exchange.js +42 -0
  54. package/dist/core/hyperliquid/exchange.js.map +1 -0
  55. package/dist/core/hyperliquid/exchangeParse.d.ts +7 -0
  56. package/dist/core/hyperliquid/exchangeParse.d.ts.map +1 -0
  57. package/dist/core/hyperliquid/exchangeParse.js +44 -0
  58. package/dist/core/hyperliquid/exchangeParse.js.map +1 -0
  59. package/dist/core/hyperliquid/float.d.ts +6 -0
  60. package/dist/core/hyperliquid/float.d.ts.map +1 -0
  61. package/dist/core/hyperliquid/float.js +24 -0
  62. package/dist/core/hyperliquid/float.js.map +1 -0
  63. package/dist/core/hyperliquid/klineCoin.d.ts +10 -0
  64. package/dist/core/hyperliquid/klineCoin.d.ts.map +1 -0
  65. package/dist/core/hyperliquid/klineCoin.js +90 -0
  66. package/dist/core/hyperliquid/klineCoin.js.map +1 -0
  67. package/dist/core/hyperliquid/orders.d.ts +91 -0
  68. package/dist/core/hyperliquid/orders.d.ts.map +1 -0
  69. package/dist/core/hyperliquid/orders.js +116 -0
  70. package/dist/core/hyperliquid/orders.js.map +1 -0
  71. package/dist/core/hyperliquid/prefixedPerpCoin.d.ts +3 -0
  72. package/dist/core/hyperliquid/prefixedPerpCoin.d.ts.map +1 -0
  73. package/dist/core/hyperliquid/prefixedPerpCoin.js +10 -0
  74. package/dist/core/hyperliquid/prefixedPerpCoin.js.map +1 -0
  75. package/dist/core/hyperliquid/signed-exchange.d.ts +10 -0
  76. package/dist/core/hyperliquid/signed-exchange.d.ts.map +1 -0
  77. package/dist/core/hyperliquid/signed-exchange.js +23 -0
  78. package/dist/core/hyperliquid/signed-exchange.js.map +1 -0
  79. package/dist/core/hyperliquid/signing.d.ts +23 -0
  80. package/dist/core/hyperliquid/signing.d.ts.map +1 -0
  81. package/dist/core/hyperliquid/signing.js +65 -0
  82. package/dist/core/hyperliquid/signing.js.map +1 -0
  83. package/dist/core/hyperliquid/types.d.ts +11 -0
  84. package/dist/core/hyperliquid/types.d.ts.map +1 -0
  85. package/dist/core/hyperliquid/types.js +2 -0
  86. package/dist/core/hyperliquid/types.js.map +1 -0
  87. package/dist/core/hyperliquid/watchOrders.d.ts +10 -0
  88. package/dist/core/hyperliquid/watchOrders.d.ts.map +1 -0
  89. package/dist/core/hyperliquid/watchOrders.js +38 -0
  90. package/dist/core/hyperliquid/watchOrders.js.map +1 -0
  91. package/dist/core/state/bracketReconcile.d.ts +23 -0
  92. package/dist/core/state/bracketReconcile.d.ts.map +1 -0
  93. package/dist/core/state/bracketReconcile.js +297 -0
  94. package/dist/core/state/bracketReconcile.js.map +1 -0
  95. package/dist/core/state/cancelOpenPlan.d.ts +23 -0
  96. package/dist/core/state/cancelOpenPlan.d.ts.map +1 -0
  97. package/dist/core/state/cancelOpenPlan.js +126 -0
  98. package/dist/core/state/cancelOpenPlan.js.map +1 -0
  99. package/dist/core/state/gcTradeState.d.ts +13 -0
  100. package/dist/core/state/gcTradeState.d.ts.map +1 -0
  101. package/dist/core/state/gcTradeState.js +48 -0
  102. package/dist/core/state/gcTradeState.js.map +1 -0
  103. package/dist/core/state/gridReconcile.d.ts +46 -0
  104. package/dist/core/state/gridReconcile.d.ts.map +1 -0
  105. package/dist/core/state/gridReconcile.js +307 -0
  106. package/dist/core/state/gridReconcile.js.map +1 -0
  107. package/dist/core/state/intentFactory.d.ts +58 -0
  108. package/dist/core/state/intentFactory.d.ts.map +1 -0
  109. package/dist/core/state/intentFactory.js +95 -0
  110. package/dist/core/state/intentFactory.js.map +1 -0
  111. package/dist/core/state/present.d.ts +17 -0
  112. package/dist/core/state/present.d.ts.map +1 -0
  113. package/dist/core/state/present.js +100 -0
  114. package/dist/core/state/present.js.map +1 -0
  115. package/dist/core/state/runCancelOpen.d.ts +32 -0
  116. package/dist/core/state/runCancelOpen.d.ts.map +1 -0
  117. package/dist/core/state/runCancelOpen.js +101 -0
  118. package/dist/core/state/runCancelOpen.js.map +1 -0
  119. package/dist/core/state/runReconcile.d.ts +20 -0
  120. package/dist/core/state/runReconcile.d.ts.map +1 -0
  121. package/dist/core/state/runReconcile.js +248 -0
  122. package/dist/core/state/runReconcile.js.map +1 -0
  123. package/dist/core/state/schema.d.ts +1161 -0
  124. package/dist/core/state/schema.d.ts.map +1 -0
  125. package/dist/core/state/schema.js +151 -0
  126. package/dist/core/state/schema.js.map +1 -0
  127. package/dist/core/state/snapshot.d.ts +22 -0
  128. package/dist/core/state/snapshot.d.ts.map +1 -0
  129. package/dist/core/state/snapshot.js +115 -0
  130. package/dist/core/state/snapshot.js.map +1 -0
  131. package/dist/core/state/statePaths.d.ts +2 -0
  132. package/dist/core/state/statePaths.d.ts.map +1 -0
  133. package/dist/core/state/statePaths.js +7 -0
  134. package/dist/core/state/statePaths.js.map +1 -0
  135. package/dist/core/state/store.d.ts +12 -0
  136. package/dist/core/state/store.d.ts.map +1 -0
  137. package/dist/core/state/store.js +95 -0
  138. package/dist/core/state/store.js.map +1 -0
  139. package/dist/core/state/types.d.ts +40 -0
  140. package/dist/core/state/types.d.ts.map +1 -0
  141. package/dist/core/state/types.js +2 -0
  142. package/dist/core/state/types.js.map +1 -0
  143. package/dist/core/trading.d.ts +8 -0
  144. package/dist/core/trading.d.ts.map +1 -0
  145. package/dist/core/trading.js +22 -0
  146. package/dist/core/trading.js.map +1 -0
  147. package/dist/core/wallet.d.ts +3 -0
  148. package/dist/core/wallet.d.ts.map +1 -0
  149. package/dist/core/wallet.js +14 -0
  150. package/dist/core/wallet.js.map +1 -0
  151. package/dist/daemon/index.d.ts +3 -0
  152. package/dist/daemon/index.d.ts.map +1 -0
  153. package/dist/daemon/index.js +104 -0
  154. package/dist/daemon/index.js.map +1 -0
  155. package/dist/meta/version.d.ts +2 -0
  156. package/dist/meta/version.d.ts.map +1 -0
  157. package/dist/meta/version.js +12 -0
  158. package/dist/meta/version.js.map +1 -0
  159. package/dist/strategies/grid.d.ts +46 -0
  160. package/dist/strategies/grid.d.ts.map +1 -0
  161. package/dist/strategies/grid.js +101 -0
  162. package/dist/strategies/grid.js.map +1 -0
  163. package/package.json +46 -0
@@ -0,0 +1,198 @@
1
+ import { ConfigError } from "../core/errors.js";
2
+ import { loadEffectiveConfig } from "../core/config.js";
3
+ import { HyperliquidInfoClient } from "../core/hyperliquid/client.js";
4
+ import { HyperliquidExchangeClient } from "../core/hyperliquid/exchange.js";
5
+ import { extractOrderOidsFromExchangeResponse } from "../core/hyperliquid/exchangeParse.js";
6
+ import { perpCoinToExchangeAssetId } from "../core/hyperliquid/asset.js";
7
+ import { buildSignedExchangePayload } from "../core/hyperliquid/signed-exchange.js";
8
+ import { createGridIntentRecord } from "../core/state/intentFactory.js";
9
+ import { upsertIntentInStateFileAtomic } from "../core/state/store.js";
10
+ import { requireTraderWallet } from "../core/trading.js";
11
+ import { buildGridOrderAction, gridPriceLevels } from "../strategies/grid.js";
12
+ import { requireStdinYes } from "./confirm.js";
13
+ import { inferHlDexFromPrefixedCoin, logVerbose, printJson, readGlobalOptions, resolveTradeStatePath, } from "./util.js";
14
+ function parseTif(raw) {
15
+ const s = raw.trim();
16
+ if (s === "Gtc" || s === "Ioc" || s === "Alo") {
17
+ return s;
18
+ }
19
+ throw new ConfigError(`Invalid --tif '${raw}'. Use Gtc | Ioc | Alo.`);
20
+ }
21
+ function parseBias(raw) {
22
+ const s = raw.trim().toLowerCase();
23
+ if (s === "symmetric" || s === "long" || s === "short") {
24
+ return s;
25
+ }
26
+ throw new ConfigError(`Invalid --bias '${raw}'. Use symmetric | long | short.`);
27
+ }
28
+ function isMainnet(cfg) {
29
+ return cfg.network === "mainnet";
30
+ }
31
+ export function attachStrategyCli(program) {
32
+ const strategy = program
33
+ .command("strategy")
34
+ .description("Strategy helpers (batch orders / Phase 3)");
35
+ strategy
36
+ .command("grid")
37
+ .description("Place evenly spaced limit orders between lower and upper (dry-run JSON by default)")
38
+ .requiredOption("--coin <sym>", "HL perp coin symbol (BTC, ETH, HIP-3 names, ...)")
39
+ .requiredOption("--lower <px>", "grid lower bound (decimal)")
40
+ .requiredOption("--upper <px>", "grid upper bound (decimal, must be > lower when grids>1)")
41
+ .requiredOption("--grids <n>", "number of resting price levels (integer >= 1); symmetric + even N omits midpoint (N/2 buys below, N/2 sells above)")
42
+ .requiredOption("--order-sz <sz>", "size per level (decimal)")
43
+ .option("--bias <mode>", "symmetric | long | short", "symmetric")
44
+ .option("--tif <tif>", "Gtc | Ioc | Alo", "Gtc")
45
+ .option("--reduce-only", "reduce-only", false)
46
+ .option("--dex <dex>", "HIP-3 perp dex for meta resolution (omit: infer deployer from coin prefix)")
47
+ .option("--max-orders <n>", "cap resting orders sent in this batch (omit: all grid levels)")
48
+ .option("--replenish-gap-px <px>", "optional: after a full fill, counter limit = that leg's limit price ± this px (buy leg -> +px sell, sell leg -> -px buy); uses scheduled leg px not fill/VWAP; next --live reconcile places it")
49
+ .option("--live", "sign + POST /exchange", false)
50
+ .option("--assume-yes", "with --live: skip stdin YES (dangerous)", false)
51
+ .option("--state-file <path>", "Override root --state-file or JCC_HYPER_STATE_FILE; default ~/.jcc_hyper_tool/trade-state.json")
52
+ .action(async (opts, command) => {
53
+ const o = opts;
54
+ const globals = readGlobalOptions(command);
55
+ const cfg = loadEffectiveConfig({ network: globals.network, apiUrl: globals.apiUrl });
56
+ const lower = Number(o.lower);
57
+ const upper = Number(o.upper);
58
+ const grids = Number(o.grids);
59
+ const orderSz = Number(o.orderSz);
60
+ if (!Number.isFinite(lower) || !Number.isFinite(upper)) {
61
+ throw new ConfigError("--lower / --upper must be finite numbers.");
62
+ }
63
+ if (!Number.isFinite(orderSz) || orderSz <= 0) {
64
+ throw new ConfigError("--order-sz must be a finite positive number.");
65
+ }
66
+ if (!Number.isFinite(grids) || grids < 1 || !Number.isInteger(grids)) {
67
+ throw new ConfigError("--grids must be a positive integer.");
68
+ }
69
+ const bias = parseBias(String(o.bias ?? "symmetric"));
70
+ const tif = parseTif(String(o.tif ?? "Gtc"));
71
+ let maxOrders;
72
+ if (o.maxOrders !== undefined && o.maxOrders !== "") {
73
+ const mo = Number(o.maxOrders);
74
+ if (!Number.isFinite(mo) || mo < 1 || !Number.isInteger(mo)) {
75
+ throw new ConfigError("--max-orders must be a positive integer.");
76
+ }
77
+ maxOrders = mo;
78
+ }
79
+ let replenishGapPx;
80
+ if (o.replenishGapPx !== undefined && o.replenishGapPx !== "") {
81
+ const g = Number(o.replenishGapPx);
82
+ if (!Number.isFinite(g) || g <= 0) {
83
+ throw new ConfigError("--replenish-gap-px must be a finite positive number.");
84
+ }
85
+ replenishGapPx = g;
86
+ }
87
+ const coin = o.coin ?? "";
88
+ logVerbose(command, `[strategy grid ${coin}] fetch meta`);
89
+ const dex = o.dex?.trim() || inferHlDexFromPrefixedCoin(coin);
90
+ const statePath = resolveTradeStatePath(command, o.stateFile);
91
+ let gridIntent;
92
+ const nowMsG = Date.now();
93
+ if (statePath) {
94
+ gridIntent = createGridIntentRecord({
95
+ nowMs: nowMsG,
96
+ coin,
97
+ dex,
98
+ network: cfg.network,
99
+ lower,
100
+ upper,
101
+ grids,
102
+ orderSz,
103
+ bias,
104
+ tif,
105
+ reduceOnly: Boolean(o.reduceOnly),
106
+ maxOrders,
107
+ replenishGapPx,
108
+ });
109
+ await upsertIntentInStateFileAtomic(statePath, gridIntent, [
110
+ {
111
+ t: nowMsG,
112
+ intentId: gridIntent.id,
113
+ type: "intent_created",
114
+ message: "grid",
115
+ },
116
+ ], nowMsG);
117
+ }
118
+ const info = new HyperliquidInfoClient({ infoOrigin: cfg.infoOrigin });
119
+ const meta = await info.meta(dex);
120
+ const perpDexs = dex ? await info.perpDexs() : undefined;
121
+ const assetIndex = perpCoinToExchangeAssetId({
122
+ coin,
123
+ meta,
124
+ dex,
125
+ perpDexs,
126
+ });
127
+ const prices = gridPriceLevels(lower, upper, grids, bias);
128
+ const action = buildGridOrderAction({
129
+ assetIndex,
130
+ prices,
131
+ lower,
132
+ upper,
133
+ bias,
134
+ orderSz,
135
+ reduceOnly: Boolean(o.reduceOnly),
136
+ tif,
137
+ maxOrders,
138
+ });
139
+ const live = Boolean(o.live);
140
+ if (!live) {
141
+ printJson({
142
+ mode: "dry_run",
143
+ preview: {
144
+ network: cfg.network,
145
+ coin,
146
+ dex: dex ?? null,
147
+ lower,
148
+ upper,
149
+ grids,
150
+ orderSz,
151
+ bias,
152
+ tif,
153
+ reduceOnly: Boolean(o.reduceOnly),
154
+ maxOrders: maxOrders ?? null,
155
+ replenishGapPx: replenishGapPx ?? null,
156
+ assetIndex,
157
+ prices,
158
+ action,
159
+ },
160
+ stateIntentId: gridIntent?.id ?? null,
161
+ note: "No signing or exchange request. Provide private key env for --live (requires YES unless --assume-yes).",
162
+ });
163
+ return;
164
+ }
165
+ const trader = requireTraderWallet(cfg);
166
+ process.stderr.write(`LIVE grid preview:\n${JSON.stringify({ action }, null, 2)}\n`);
167
+ if (!o.assumeYes) {
168
+ await requireStdinYes("Type YES to submit this LIVE grid batch:\n");
169
+ }
170
+ const ex = new HyperliquidExchangeClient({ apiOrigin: cfg.infoOrigin });
171
+ const body = await buildSignedExchangePayload(trader.wallet, action, {
172
+ isMainnet: isMainnet(cfg),
173
+ });
174
+ const gridResp = await ex.exchange(body);
175
+ if (statePath && gridIntent) {
176
+ const oids = extractOrderOidsFromExchangeResponse(gridResp);
177
+ const cap = maxOrders ?? gridIntent.legs.length;
178
+ const legs = gridIntent.legs.map((leg, i) => {
179
+ if (i >= cap) {
180
+ return leg;
181
+ }
182
+ const oid = oids[i];
183
+ if (typeof oid === "number") {
184
+ return { ...leg, oid, legPhase: "open" };
185
+ }
186
+ return leg;
187
+ });
188
+ const updated = {
189
+ ...gridIntent,
190
+ legs,
191
+ updatedAtMs: Date.now(),
192
+ };
193
+ await upsertIntentInStateFileAtomic(statePath, updated, [{ t: Date.now(), intentId: updated.id, type: "live_response" }], Date.now());
194
+ }
195
+ printJson(gridResp);
196
+ });
197
+ }
198
+ //# sourceMappingURL=strategyCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyCli.js","sourceRoot":"","sources":["../../src/cli/strategyCli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function attachTradingCli(program: Command): void;
3
+ //# sourceMappingURL=tradingCli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradingCli.d.ts","sourceRoot":"","sources":["../../src/cli/tradingCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoGpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6rBvD"}