jcc_hyper_tool 0.1.5 → 0.1.6

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 (135) hide show
  1. package/README.md +124 -17
  2. package/dist/advisor/actionRunner.d.ts +6 -0
  3. package/dist/advisor/actionRunner.d.ts.map +1 -1
  4. package/dist/advisor/actionRunner.js +38 -7
  5. package/dist/advisor/actionRunner.js.map +1 -1
  6. package/dist/advisor/actionSchema.d.ts +1209 -75
  7. package/dist/advisor/actionSchema.d.ts.map +1 -1
  8. package/dist/advisor/actionSchema.js +117 -5
  9. package/dist/advisor/actionSchema.js.map +1 -1
  10. package/dist/advisor/adviseDisplay.d.ts +26 -0
  11. package/dist/advisor/adviseDisplay.d.ts.map +1 -0
  12. package/dist/advisor/adviseDisplay.js +174 -0
  13. package/dist/advisor/adviseDisplay.js.map +1 -0
  14. package/dist/advisor/adviseEngine.d.ts +12 -2
  15. package/dist/advisor/adviseEngine.d.ts.map +1 -1
  16. package/dist/advisor/adviseEngine.js +88 -7
  17. package/dist/advisor/adviseEngine.js.map +1 -1
  18. package/dist/advisor/ambushPolicy.d.ts +47 -0
  19. package/dist/advisor/ambushPolicy.d.ts.map +1 -0
  20. package/dist/advisor/ambushPolicy.js +161 -0
  21. package/dist/advisor/ambushPolicy.js.map +1 -0
  22. package/dist/advisor/contextBuilder.d.ts +17 -0
  23. package/dist/advisor/contextBuilder.d.ts.map +1 -1
  24. package/dist/advisor/contextBuilder.js +25 -6
  25. package/dist/advisor/contextBuilder.js.map +1 -1
  26. package/dist/advisor/executionPolicy.d.ts +92 -0
  27. package/dist/advisor/executionPolicy.d.ts.map +1 -0
  28. package/dist/advisor/executionPolicy.js +273 -0
  29. package/dist/advisor/executionPolicy.js.map +1 -0
  30. package/dist/advisor/guards.d.ts +14 -0
  31. package/dist/advisor/guards.d.ts.map +1 -1
  32. package/dist/advisor/guards.js +143 -16
  33. package/dist/advisor/guards.js.map +1 -1
  34. package/dist/advisor/indicatorCompute.d.ts +45 -0
  35. package/dist/advisor/indicatorCompute.d.ts.map +1 -0
  36. package/dist/advisor/indicatorCompute.js +259 -0
  37. package/dist/advisor/indicatorCompute.js.map +1 -0
  38. package/dist/advisor/positionPlan.d.ts +33 -0
  39. package/dist/advisor/positionPlan.d.ts.map +1 -0
  40. package/dist/advisor/positionPlan.js +118 -0
  41. package/dist/advisor/positionPlan.js.map +1 -0
  42. package/dist/advisor/promptTemplate.d.ts +8 -2
  43. package/dist/advisor/promptTemplate.d.ts.map +1 -1
  44. package/dist/advisor/promptTemplate.js +175 -23
  45. package/dist/advisor/promptTemplate.js.map +1 -1
  46. package/dist/advisor/touchProbability.d.ts +54 -0
  47. package/dist/advisor/touchProbability.d.ts.map +1 -0
  48. package/dist/advisor/touchProbability.js +215 -0
  49. package/dist/advisor/touchProbability.js.map +1 -0
  50. package/dist/advisor/tpslPolicy.d.ts +22 -0
  51. package/dist/advisor/tpslPolicy.d.ts.map +1 -0
  52. package/dist/advisor/tpslPolicy.js +120 -0
  53. package/dist/advisor/tpslPolicy.js.map +1 -0
  54. package/dist/cli/advisorCli.d.ts.map +1 -1
  55. package/dist/cli/advisorCli.js +478 -126
  56. package/dist/cli/advisorCli.js.map +1 -1
  57. package/dist/cli/index.js +2 -0
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/riskCli.d.ts +3 -0
  60. package/dist/cli/riskCli.d.ts.map +1 -0
  61. package/dist/cli/riskCli.js +120 -0
  62. package/dist/cli/riskCli.js.map +1 -0
  63. package/dist/cli/strategyCli.d.ts.map +1 -1
  64. package/dist/cli/strategyCli.js +3 -1
  65. package/dist/cli/strategyCli.js.map +1 -1
  66. package/dist/cli/tradingCli.d.ts.map +1 -1
  67. package/dist/cli/tradingCli.js +31 -1
  68. package/dist/cli/tradingCli.js.map +1 -1
  69. package/dist/core/hyperliquid/asset.d.ts +2 -0
  70. package/dist/core/hyperliquid/asset.d.ts.map +1 -1
  71. package/dist/core/hyperliquid/asset.js +25 -0
  72. package/dist/core/hyperliquid/asset.js.map +1 -1
  73. package/dist/core/hyperliquid/orders.d.ts +5 -0
  74. package/dist/core/hyperliquid/orders.d.ts.map +1 -1
  75. package/dist/core/hyperliquid/orders.js +15 -5
  76. package/dist/core/hyperliquid/orders.js.map +1 -1
  77. package/dist/core/hyperliquid/rounding.d.ts +23 -0
  78. package/dist/core/hyperliquid/rounding.d.ts.map +1 -0
  79. package/dist/core/hyperliquid/rounding.js +53 -0
  80. package/dist/core/hyperliquid/rounding.js.map +1 -0
  81. package/dist/core/risk/isolatedTopUp.d.ts +112 -0
  82. package/dist/core/risk/isolatedTopUp.d.ts.map +1 -0
  83. package/dist/core/risk/isolatedTopUp.js +209 -0
  84. package/dist/core/risk/isolatedTopUp.js.map +1 -0
  85. package/dist/core/risk/isolatedTopUpHistory.d.ts +7 -0
  86. package/dist/core/risk/isolatedTopUpHistory.d.ts.map +1 -0
  87. package/dist/core/risk/isolatedTopUpHistory.js +26 -0
  88. package/dist/core/risk/isolatedTopUpHistory.js.map +1 -0
  89. package/dist/core/risk/isolatedTopUpParse.d.ts +16 -0
  90. package/dist/core/risk/isolatedTopUpParse.d.ts.map +1 -0
  91. package/dist/core/risk/isolatedTopUpParse.js +78 -0
  92. package/dist/core/risk/isolatedTopUpParse.js.map +1 -0
  93. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts +28 -0
  94. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts.map +1 -0
  95. package/dist/core/risk/runIsolatedTopUpReconcile.js +184 -0
  96. package/dist/core/risk/runIsolatedTopUpReconcile.js.map +1 -0
  97. package/dist/core/state/gridReconcile.d.ts +2 -0
  98. package/dist/core/state/gridReconcile.d.ts.map +1 -1
  99. package/dist/core/state/gridReconcile.js +42 -2
  100. package/dist/core/state/gridReconcile.js.map +1 -1
  101. package/dist/core/state/intentFactory.d.ts +1 -0
  102. package/dist/core/state/intentFactory.d.ts.map +1 -1
  103. package/dist/core/state/intentFactory.js +1 -0
  104. package/dist/core/state/intentFactory.js.map +1 -1
  105. package/dist/core/state/profileStore.d.ts.map +1 -1
  106. package/dist/core/state/profileStore.js +12 -16
  107. package/dist/core/state/profileStore.js.map +1 -1
  108. package/dist/core/state/runReconcile.d.ts.map +1 -1
  109. package/dist/core/state/runReconcile.js +53 -18
  110. package/dist/core/state/runReconcile.js.map +1 -1
  111. package/dist/core/state/schema.d.ts +439 -68
  112. package/dist/core/state/schema.d.ts.map +1 -1
  113. package/dist/core/state/schema.js +51 -0
  114. package/dist/core/state/schema.js.map +1 -1
  115. package/dist/core/state/snapshot.d.ts +13 -0
  116. package/dist/core/state/snapshot.d.ts.map +1 -1
  117. package/dist/core/state/snapshot.js +36 -0
  118. package/dist/core/state/snapshot.js.map +1 -1
  119. package/dist/core/state/store.d.ts +21 -3
  120. package/dist/core/state/store.d.ts.map +1 -1
  121. package/dist/core/state/store.js +122 -13
  122. package/dist/core/state/store.js.map +1 -1
  123. package/dist/core/state/types.d.ts +13 -0
  124. package/dist/core/state/types.d.ts.map +1 -1
  125. package/dist/daemon/index.js +47 -2
  126. package/dist/daemon/index.js.map +1 -1
  127. package/dist/daemon/validateChild.d.ts +13 -0
  128. package/dist/daemon/validateChild.d.ts.map +1 -0
  129. package/dist/daemon/validateChild.js +77 -0
  130. package/dist/daemon/validateChild.js.map +1 -0
  131. package/dist/strategies/grid.d.ts +1 -0
  132. package/dist/strategies/grid.d.ts.map +1 -1
  133. package/dist/strategies/grid.js +1 -0
  134. package/dist/strategies/grid.js.map +1 -1
  135. package/package.json +3 -1
@@ -11,6 +11,8 @@ declare const BracketIntentSchema: z.ZodObject<{
11
11
  entryLimitPx: z.ZodNumber;
12
12
  entrySz: z.ZodNumber;
13
13
  tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
14
+ /** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
15
+ strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
14
16
  entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
15
17
  tpTriggerPx: z.ZodNumber;
16
18
  slTriggerPx: z.ZodNumber;
@@ -43,7 +45,7 @@ declare const BracketIntentSchema: z.ZodObject<{
43
45
  entrySide: "buy" | "sell";
44
46
  entryLimitPx: number;
45
47
  entrySz: number;
46
- tif: "Ioc" | "Gtc" | "Alo";
48
+ tif: "Gtc" | "Ioc" | "Alo";
47
49
  tpTriggerPx: number;
48
50
  slTriggerPx: number;
49
51
  tpslIsMarket: boolean;
@@ -51,6 +53,7 @@ declare const BracketIntentSchema: z.ZodObject<{
51
53
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
52
54
  dex?: string | undefined;
53
55
  network?: string | undefined;
56
+ strategy?: "scalp" | "ambush" | undefined;
54
57
  entryReduceOnly?: boolean | undefined;
55
58
  tpslLimitPx?: number | undefined;
56
59
  entryOid?: number | undefined;
@@ -72,13 +75,14 @@ declare const BracketIntentSchema: z.ZodObject<{
72
75
  entrySide: "buy" | "sell";
73
76
  entryLimitPx: number;
74
77
  entrySz: number;
75
- tif: "Ioc" | "Gtc" | "Alo";
78
+ tif: "Gtc" | "Ioc" | "Alo";
76
79
  tpTriggerPx: number;
77
80
  slTriggerPx: number;
78
81
  tpslIsMarket: boolean;
79
82
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
80
83
  dex?: string | undefined;
81
84
  network?: string | undefined;
85
+ strategy?: "scalp" | "ambush" | undefined;
82
86
  entryReduceOnly?: boolean | undefined;
83
87
  tpslLimitPx?: number | undefined;
84
88
  protectionReduceOnly?: boolean | undefined;
@@ -117,6 +121,8 @@ declare const GridIntentSchema: z.ZodObject<{
117
121
  replenishGapPx: z.ZodOptional<z.ZodNumber>;
118
122
  /** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
119
123
  replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
124
+ /** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
125
+ regenerateGrid: z.ZodOptional<z.ZodBoolean>;
120
126
  legs: z.ZodArray<z.ZodObject<{
121
127
  index: z.ZodNumber;
122
128
  px: z.ZodNumber;
@@ -138,10 +144,10 @@ declare const GridIntentSchema: z.ZodObject<{
138
144
  fillPx: number;
139
145
  }>>;
140
146
  }, "strip", z.ZodTypeAny, {
147
+ isBuy: boolean;
141
148
  index: number;
142
149
  px: number;
143
- isBuy: boolean;
144
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
150
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
145
151
  oid?: number | undefined;
146
152
  lastSz?: number | undefined;
147
153
  lastOrigSz?: number | undefined;
@@ -150,10 +156,10 @@ declare const GridIntentSchema: z.ZodObject<{
150
156
  fillPx: number;
151
157
  } | undefined;
152
158
  }, {
159
+ isBuy: boolean;
153
160
  index: number;
154
161
  px: number;
155
- isBuy: boolean;
156
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
162
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
157
163
  oid?: number | undefined;
158
164
  lastSz?: number | undefined;
159
165
  lastOrigSz?: number | undefined;
@@ -168,7 +174,7 @@ declare const GridIntentSchema: z.ZodObject<{
168
174
  id: string;
169
175
  createdAtMs: number;
170
176
  updatedAtMs: number;
171
- tif: "Ioc" | "Gtc" | "Alo";
177
+ tif: "Gtc" | "Ioc" | "Alo";
172
178
  lower: number;
173
179
  upper: number;
174
180
  grids: number;
@@ -176,10 +182,10 @@ declare const GridIntentSchema: z.ZodObject<{
176
182
  bias: "symmetric" | "long" | "short";
177
183
  reduceOnly: boolean;
178
184
  legs: {
185
+ isBuy: boolean;
179
186
  index: number;
180
187
  px: number;
181
- isBuy: boolean;
182
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
188
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
183
189
  oid?: number | undefined;
184
190
  lastSz?: number | undefined;
185
191
  lastOrigSz?: number | undefined;
@@ -193,13 +199,14 @@ declare const GridIntentSchema: z.ZodObject<{
193
199
  maxOrders?: number | undefined;
194
200
  replenishGapPx?: number | undefined;
195
201
  replenishDedupeKeys?: string[] | undefined;
202
+ regenerateGrid?: boolean | undefined;
196
203
  }, {
197
204
  coin: string;
198
205
  kind: "grid";
199
206
  id: string;
200
207
  createdAtMs: number;
201
208
  updatedAtMs: number;
202
- tif: "Ioc" | "Gtc" | "Alo";
209
+ tif: "Gtc" | "Ioc" | "Alo";
203
210
  lower: number;
204
211
  upper: number;
205
212
  grids: number;
@@ -207,10 +214,10 @@ declare const GridIntentSchema: z.ZodObject<{
207
214
  bias: "symmetric" | "long" | "short";
208
215
  reduceOnly: boolean;
209
216
  legs: {
217
+ isBuy: boolean;
210
218
  index: number;
211
219
  px: number;
212
- isBuy: boolean;
213
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
220
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
214
221
  oid?: number | undefined;
215
222
  lastSz?: number | undefined;
216
223
  lastOrigSz?: number | undefined;
@@ -224,6 +231,7 @@ declare const GridIntentSchema: z.ZodObject<{
224
231
  maxOrders?: number | undefined;
225
232
  replenishGapPx?: number | undefined;
226
233
  replenishDedupeKeys?: string[] | undefined;
234
+ regenerateGrid?: boolean | undefined;
227
235
  }>;
228
236
  declare const SingleLimitIntentSchema: z.ZodObject<{
229
237
  kind: z.ZodLiteral<"single_limit">;
@@ -246,11 +254,11 @@ declare const SingleLimitIntentSchema: z.ZodObject<{
246
254
  createdAtMs: number;
247
255
  updatedAtMs: number;
248
256
  entrySide: "buy" | "sell";
249
- tif: "Ioc" | "Gtc" | "Alo";
257
+ tif: "Gtc" | "Ioc" | "Alo";
250
258
  reduceOnly: boolean;
251
259
  limitPx: number;
252
- dex?: string | undefined;
253
260
  oid?: number | undefined;
261
+ dex?: string | undefined;
254
262
  }, {
255
263
  sz: number;
256
264
  coin: string;
@@ -259,11 +267,11 @@ declare const SingleLimitIntentSchema: z.ZodObject<{
259
267
  createdAtMs: number;
260
268
  updatedAtMs: number;
261
269
  entrySide: "buy" | "sell";
262
- tif: "Ioc" | "Gtc" | "Alo";
270
+ tif: "Gtc" | "Ioc" | "Alo";
263
271
  reduceOnly: boolean;
264
272
  limitPx: number;
265
- dex?: string | undefined;
266
273
  oid?: number | undefined;
274
+ dex?: string | undefined;
267
275
  }>;
268
276
  declare const StandaloneTpslIntentSchema: z.ZodObject<{
269
277
  kind: z.ZodLiteral<"standalone_tpsl">;
@@ -292,8 +300,8 @@ declare const StandaloneTpslIntentSchema: z.ZodObject<{
292
300
  triggerPx: number;
293
301
  tpsl: "tp" | "sl";
294
302
  isMarket: boolean;
295
- dex?: string | undefined;
296
303
  oid?: number | undefined;
304
+ dex?: string | undefined;
297
305
  limitPx?: number | undefined;
298
306
  }, {
299
307
  side: "buy" | "sell";
@@ -307,8 +315,8 @@ declare const StandaloneTpslIntentSchema: z.ZodObject<{
307
315
  triggerPx: number;
308
316
  tpsl: "tp" | "sl";
309
317
  isMarket: boolean;
310
- dex?: string | undefined;
311
318
  oid?: number | undefined;
319
+ dex?: string | undefined;
312
320
  limitPx?: number | undefined;
313
321
  }>;
314
322
  export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
@@ -323,6 +331,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
323
331
  entryLimitPx: z.ZodNumber;
324
332
  entrySz: z.ZodNumber;
325
333
  tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
334
+ /** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
335
+ strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
326
336
  entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
327
337
  tpTriggerPx: z.ZodNumber;
328
338
  slTriggerPx: z.ZodNumber;
@@ -355,7 +365,7 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
355
365
  entrySide: "buy" | "sell";
356
366
  entryLimitPx: number;
357
367
  entrySz: number;
358
- tif: "Ioc" | "Gtc" | "Alo";
368
+ tif: "Gtc" | "Ioc" | "Alo";
359
369
  tpTriggerPx: number;
360
370
  slTriggerPx: number;
361
371
  tpslIsMarket: boolean;
@@ -363,6 +373,7 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
363
373
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
364
374
  dex?: string | undefined;
365
375
  network?: string | undefined;
376
+ strategy?: "scalp" | "ambush" | undefined;
366
377
  entryReduceOnly?: boolean | undefined;
367
378
  tpslLimitPx?: number | undefined;
368
379
  entryOid?: number | undefined;
@@ -384,13 +395,14 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
384
395
  entrySide: "buy" | "sell";
385
396
  entryLimitPx: number;
386
397
  entrySz: number;
387
- tif: "Ioc" | "Gtc" | "Alo";
398
+ tif: "Gtc" | "Ioc" | "Alo";
388
399
  tpTriggerPx: number;
389
400
  slTriggerPx: number;
390
401
  tpslIsMarket: boolean;
391
402
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
392
403
  dex?: string | undefined;
393
404
  network?: string | undefined;
405
+ strategy?: "scalp" | "ambush" | undefined;
394
406
  entryReduceOnly?: boolean | undefined;
395
407
  tpslLimitPx?: number | undefined;
396
408
  protectionReduceOnly?: boolean | undefined;
@@ -428,6 +440,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
428
440
  replenishGapPx: z.ZodOptional<z.ZodNumber>;
429
441
  /** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
430
442
  replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
443
+ /** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
444
+ regenerateGrid: z.ZodOptional<z.ZodBoolean>;
431
445
  legs: z.ZodArray<z.ZodObject<{
432
446
  index: z.ZodNumber;
433
447
  px: z.ZodNumber;
@@ -449,10 +463,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
449
463
  fillPx: number;
450
464
  }>>;
451
465
  }, "strip", z.ZodTypeAny, {
466
+ isBuy: boolean;
452
467
  index: number;
453
468
  px: number;
454
- isBuy: boolean;
455
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
469
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
456
470
  oid?: number | undefined;
457
471
  lastSz?: number | undefined;
458
472
  lastOrigSz?: number | undefined;
@@ -461,10 +475,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
461
475
  fillPx: number;
462
476
  } | undefined;
463
477
  }, {
478
+ isBuy: boolean;
464
479
  index: number;
465
480
  px: number;
466
- isBuy: boolean;
467
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
481
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
468
482
  oid?: number | undefined;
469
483
  lastSz?: number | undefined;
470
484
  lastOrigSz?: number | undefined;
@@ -479,7 +493,7 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
479
493
  id: string;
480
494
  createdAtMs: number;
481
495
  updatedAtMs: number;
482
- tif: "Ioc" | "Gtc" | "Alo";
496
+ tif: "Gtc" | "Ioc" | "Alo";
483
497
  lower: number;
484
498
  upper: number;
485
499
  grids: number;
@@ -487,10 +501,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
487
501
  bias: "symmetric" | "long" | "short";
488
502
  reduceOnly: boolean;
489
503
  legs: {
504
+ isBuy: boolean;
490
505
  index: number;
491
506
  px: number;
492
- isBuy: boolean;
493
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
507
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
494
508
  oid?: number | undefined;
495
509
  lastSz?: number | undefined;
496
510
  lastOrigSz?: number | undefined;
@@ -504,13 +518,14 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
504
518
  maxOrders?: number | undefined;
505
519
  replenishGapPx?: number | undefined;
506
520
  replenishDedupeKeys?: string[] | undefined;
521
+ regenerateGrid?: boolean | undefined;
507
522
  }, {
508
523
  coin: string;
509
524
  kind: "grid";
510
525
  id: string;
511
526
  createdAtMs: number;
512
527
  updatedAtMs: number;
513
- tif: "Ioc" | "Gtc" | "Alo";
528
+ tif: "Gtc" | "Ioc" | "Alo";
514
529
  lower: number;
515
530
  upper: number;
516
531
  grids: number;
@@ -518,10 +533,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
518
533
  bias: "symmetric" | "long" | "short";
519
534
  reduceOnly: boolean;
520
535
  legs: {
536
+ isBuy: boolean;
521
537
  index: number;
522
538
  px: number;
523
- isBuy: boolean;
524
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
539
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
525
540
  oid?: number | undefined;
526
541
  lastSz?: number | undefined;
527
542
  lastOrigSz?: number | undefined;
@@ -535,6 +550,7 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
535
550
  maxOrders?: number | undefined;
536
551
  replenishGapPx?: number | undefined;
537
552
  replenishDedupeKeys?: string[] | undefined;
553
+ regenerateGrid?: boolean | undefined;
538
554
  }>, z.ZodObject<{
539
555
  kind: z.ZodLiteral<"single_limit">;
540
556
  id: z.ZodString;
@@ -556,11 +572,11 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
556
572
  createdAtMs: number;
557
573
  updatedAtMs: number;
558
574
  entrySide: "buy" | "sell";
559
- tif: "Ioc" | "Gtc" | "Alo";
575
+ tif: "Gtc" | "Ioc" | "Alo";
560
576
  reduceOnly: boolean;
561
577
  limitPx: number;
562
- dex?: string | undefined;
563
578
  oid?: number | undefined;
579
+ dex?: string | undefined;
564
580
  }, {
565
581
  sz: number;
566
582
  coin: string;
@@ -569,11 +585,11 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
569
585
  createdAtMs: number;
570
586
  updatedAtMs: number;
571
587
  entrySide: "buy" | "sell";
572
- tif: "Ioc" | "Gtc" | "Alo";
588
+ tif: "Gtc" | "Ioc" | "Alo";
573
589
  reduceOnly: boolean;
574
590
  limitPx: number;
575
- dex?: string | undefined;
576
591
  oid?: number | undefined;
592
+ dex?: string | undefined;
577
593
  }>, z.ZodObject<{
578
594
  kind: z.ZodLiteral<"standalone_tpsl">;
579
595
  id: z.ZodString;
@@ -601,8 +617,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
601
617
  triggerPx: number;
602
618
  tpsl: "tp" | "sl";
603
619
  isMarket: boolean;
604
- dex?: string | undefined;
605
620
  oid?: number | undefined;
621
+ dex?: string | undefined;
606
622
  limitPx?: number | undefined;
607
623
  }, {
608
624
  side: "buy" | "sell";
@@ -616,8 +632,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
616
632
  triggerPx: number;
617
633
  tpsl: "tp" | "sl";
618
634
  isMarket: boolean;
619
- dex?: string | undefined;
620
635
  oid?: number | undefined;
636
+ dex?: string | undefined;
621
637
  limitPx?: number | undefined;
622
638
  }>]>;
623
639
  export type IntentRecord = z.infer<typeof IntentRecordSchema>;
@@ -630,28 +646,166 @@ export declare const UserProfileSchema: z.ZodObject<{
630
646
  risk: z.ZodDefault<z.ZodEnum<["conservative", "balanced", "aggressive"]>>;
631
647
  defaultMaxSz: z.ZodOptional<z.ZodNumber>;
632
648
  maxSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
649
+ /** Advisor / bracket minimum sz floor (profile guard; HL $10 notional still applies). */
650
+ defaultMinSz: z.ZodOptional<z.ZodNumber>;
651
+ minSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
633
652
  requireTpsl: z.ZodDefault<z.ZodBoolean>;
634
653
  priceDeviationPctMax: z.ZodDefault<z.ZodNumber>;
635
654
  tradingStyleNotes: z.ZodOptional<z.ZodString>;
636
655
  updatedAtMs: z.ZodOptional<z.ZodNumber>;
656
+ /** Optional isolated-margin auto top-up during `state reconcile` (default disabled). */
657
+ isolatedTopUp: z.ZodOptional<z.ZodObject<{
658
+ enabled: z.ZodDefault<z.ZodBoolean>;
659
+ safeDistancePct: z.ZodDefault<z.ZodNumber>;
660
+ safetyFactor: z.ZodDefault<z.ZodNumber>;
661
+ reserveUsd: z.ZodDefault<z.ZodNumber>;
662
+ minTopUpUsd: z.ZodDefault<z.ZodNumber>;
663
+ minPartialUsd: z.ZodDefault<z.ZodNumber>;
664
+ maxSingleTopUpUsd: z.ZodDefault<z.ZodNumber>;
665
+ maxDailyTopUpUsd: z.ZodDefault<z.ZodNumber>;
666
+ cooldownSec: z.ZodDefault<z.ZodNumber>;
667
+ }, "strip", z.ZodTypeAny, {
668
+ enabled: boolean;
669
+ safeDistancePct: number;
670
+ safetyFactor: number;
671
+ reserveUsd: number;
672
+ minTopUpUsd: number;
673
+ minPartialUsd: number;
674
+ maxSingleTopUpUsd: number;
675
+ maxDailyTopUpUsd: number;
676
+ cooldownSec: number;
677
+ }, {
678
+ enabled?: boolean | undefined;
679
+ safeDistancePct?: number | undefined;
680
+ safetyFactor?: number | undefined;
681
+ reserveUsd?: number | undefined;
682
+ minTopUpUsd?: number | undefined;
683
+ minPartialUsd?: number | undefined;
684
+ maxSingleTopUpUsd?: number | undefined;
685
+ maxDailyTopUpUsd?: number | undefined;
686
+ cooldownSec?: number | undefined;
687
+ }>>;
688
+ /** Min model confidence (0–1) required before `advise` execute / `--auto`. 0 = disabled. */
689
+ minConfidenceToExecute: z.ZodOptional<z.ZodNumber>;
690
+ /** Random limit-price offset fraction (e.g. 0.002 = up to ±0.2%). 0 = disabled. */
691
+ limitPriceJitterPct: z.ZodOptional<z.ZodNumber>;
692
+ /** Min seconds between same coin+action executions (open_with_bracket also keyed by side). 0 = disabled. */
693
+ executeCooldownSec: z.ZodOptional<z.ZodNumber>;
694
+ /**
695
+ * Bracket entry shift toward model SL (0=off, 1=entry at SL, TP/SL translated equally).
696
+ * Limit-only: unfilled = no position.
697
+ */
698
+ bracketSlEntryShift: z.ZodOptional<z.ZodNumber>;
699
+ /** Relative limit deviation above which advise replaces a pending TTL ambush (default: priceDeviationPctMax). */
700
+ ambushReplaceDeviationPct: z.ZodOptional<z.ZodNumber>;
701
+ /** Min seconds after open before advise may close without TP/SL hit (0 = disabled). Applies to all bracket-linked positions. */
702
+ antiRushCloseMinSec: z.ZodOptional<z.ZodNumber>;
703
+ /** After entry fill, wait this long for reconcile to place TP/SL before allow close (default 360s ≈ one advise round). */
704
+ protectionGraceSec: z.ZodOptional<z.ZodNumber>;
705
+ /** Block close when |unrealized PnL| below this fraction of entry (e.g. 0.01 = 1%) unless tp_unreachable. */
706
+ minClosePnlPct: z.ZodOptional<z.ZodNumber>;
707
+ /** Min TP distance / SL distance from bracket entry (default by risk: conservative 2.5, balanced 2, aggressive 1.5). */
708
+ minRewardRiskRatio: z.ZodOptional<z.ZodNumber>;
709
+ /** Max SL distance from entry as fraction of entry px (default by risk: conservative 1.2%, balanced 2%, aggressive 3%). */
710
+ maxSlPctFromEntry: z.ZodOptional<z.ZodNumber>;
711
+ /** Block bracket when computed SL touch prob exceeds this (ATR barrier model). */
712
+ maxSlTouchProb: z.ZodOptional<z.ZodNumber>;
713
+ /** Block when SL touch prob × slSweepLiquidityMultiplier exceeds this (stop-hunt adjusted). */
714
+ maxSlSweepProb: z.ZodOptional<z.ZodNumber>;
715
+ /** Move SL away from structure by this × ATR₁h before execute (buy: down, sell: up). 0 = off. */
716
+ slAntiSweepAtrFactor: z.ZodOptional<z.ZodNumber>;
717
+ /** Multiplier on SL touch prob to approximate stop-hunt / AI sweep risk (default 2). */
718
+ slSweepLiquidityMultiplier: z.ZodOptional<z.ZodNumber>;
719
+ /** Default ambush TTL minutes when model omits expires_in_min (15–30 typical). */
720
+ defaultAmbushExpiresMin: z.ZodOptional<z.ZodNumber>;
721
+ /** Block cancel_all while unexpired TTL ambush entry is still pending (default true). */
722
+ forbidCancelAllWithActiveAmbush: z.ZodDefault<z.ZodBoolean>;
637
723
  }, "strip", z.ZodTypeAny, {
638
724
  risk: "conservative" | "balanced" | "aggressive";
639
725
  requireTpsl: boolean;
640
726
  priceDeviationPctMax: number;
727
+ forbidCancelAllWithActiveAmbush: boolean;
641
728
  updatedAtMs?: number | undefined;
642
729
  defaultMaxSz?: number | undefined;
643
730
  maxSzByCoin?: Record<string, number> | undefined;
731
+ defaultMinSz?: number | undefined;
732
+ minSzByCoin?: Record<string, number> | undefined;
644
733
  tradingStyleNotes?: string | undefined;
734
+ isolatedTopUp?: {
735
+ enabled: boolean;
736
+ safeDistancePct: number;
737
+ safetyFactor: number;
738
+ reserveUsd: number;
739
+ minTopUpUsd: number;
740
+ minPartialUsd: number;
741
+ maxSingleTopUpUsd: number;
742
+ maxDailyTopUpUsd: number;
743
+ cooldownSec: number;
744
+ } | undefined;
745
+ minConfidenceToExecute?: number | undefined;
746
+ limitPriceJitterPct?: number | undefined;
747
+ executeCooldownSec?: number | undefined;
748
+ bracketSlEntryShift?: number | undefined;
749
+ ambushReplaceDeviationPct?: number | undefined;
750
+ antiRushCloseMinSec?: number | undefined;
751
+ protectionGraceSec?: number | undefined;
752
+ minClosePnlPct?: number | undefined;
753
+ minRewardRiskRatio?: number | undefined;
754
+ maxSlPctFromEntry?: number | undefined;
755
+ maxSlTouchProb?: number | undefined;
756
+ maxSlSweepProb?: number | undefined;
757
+ slAntiSweepAtrFactor?: number | undefined;
758
+ slSweepLiquidityMultiplier?: number | undefined;
759
+ defaultAmbushExpiresMin?: number | undefined;
645
760
  }, {
646
761
  updatedAtMs?: number | undefined;
647
762
  risk?: "conservative" | "balanced" | "aggressive" | undefined;
648
763
  defaultMaxSz?: number | undefined;
649
764
  maxSzByCoin?: Record<string, number> | undefined;
765
+ defaultMinSz?: number | undefined;
766
+ minSzByCoin?: Record<string, number> | undefined;
650
767
  requireTpsl?: boolean | undefined;
651
768
  priceDeviationPctMax?: number | undefined;
652
769
  tradingStyleNotes?: string | undefined;
770
+ isolatedTopUp?: {
771
+ enabled?: boolean | undefined;
772
+ safeDistancePct?: number | undefined;
773
+ safetyFactor?: number | undefined;
774
+ reserveUsd?: number | undefined;
775
+ minTopUpUsd?: number | undefined;
776
+ minPartialUsd?: number | undefined;
777
+ maxSingleTopUpUsd?: number | undefined;
778
+ maxDailyTopUpUsd?: number | undefined;
779
+ cooldownSec?: number | undefined;
780
+ } | undefined;
781
+ minConfidenceToExecute?: number | undefined;
782
+ limitPriceJitterPct?: number | undefined;
783
+ executeCooldownSec?: number | undefined;
784
+ bracketSlEntryShift?: number | undefined;
785
+ ambushReplaceDeviationPct?: number | undefined;
786
+ antiRushCloseMinSec?: number | undefined;
787
+ protectionGraceSec?: number | undefined;
788
+ minClosePnlPct?: number | undefined;
789
+ minRewardRiskRatio?: number | undefined;
790
+ maxSlPctFromEntry?: number | undefined;
791
+ maxSlTouchProb?: number | undefined;
792
+ maxSlSweepProb?: number | undefined;
793
+ slAntiSweepAtrFactor?: number | undefined;
794
+ slSweepLiquidityMultiplier?: number | undefined;
795
+ defaultAmbushExpiresMin?: number | undefined;
796
+ forbidCancelAllWithActiveAmbush?: boolean | undefined;
653
797
  }>;
654
798
  export type UserProfile = z.infer<typeof UserProfileSchema>;
799
+ export declare const AdviseExecuteRecordSchema: z.ZodObject<{
800
+ action: z.ZodString;
801
+ atMs: z.ZodNumber;
802
+ }, "strip", z.ZodTypeAny, {
803
+ action: string;
804
+ atMs: number;
805
+ }, {
806
+ action: string;
807
+ atMs: number;
808
+ }>;
655
809
  export declare const TradeStateFileSchema: z.ZodObject<{
656
810
  version: z.ZodLiteral<1>;
657
811
  updatedAtMs: z.ZodNumber;
@@ -667,6 +821,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
667
821
  entryLimitPx: z.ZodNumber;
668
822
  entrySz: z.ZodNumber;
669
823
  tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
824
+ /** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
825
+ strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
670
826
  entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
671
827
  tpTriggerPx: z.ZodNumber;
672
828
  slTriggerPx: z.ZodNumber;
@@ -699,7 +855,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
699
855
  entrySide: "buy" | "sell";
700
856
  entryLimitPx: number;
701
857
  entrySz: number;
702
- tif: "Ioc" | "Gtc" | "Alo";
858
+ tif: "Gtc" | "Ioc" | "Alo";
703
859
  tpTriggerPx: number;
704
860
  slTriggerPx: number;
705
861
  tpslIsMarket: boolean;
@@ -707,6 +863,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
707
863
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
708
864
  dex?: string | undefined;
709
865
  network?: string | undefined;
866
+ strategy?: "scalp" | "ambush" | undefined;
710
867
  entryReduceOnly?: boolean | undefined;
711
868
  tpslLimitPx?: number | undefined;
712
869
  entryOid?: number | undefined;
@@ -728,13 +885,14 @@ export declare const TradeStateFileSchema: z.ZodObject<{
728
885
  entrySide: "buy" | "sell";
729
886
  entryLimitPx: number;
730
887
  entrySz: number;
731
- tif: "Ioc" | "Gtc" | "Alo";
888
+ tif: "Gtc" | "Ioc" | "Alo";
732
889
  tpTriggerPx: number;
733
890
  slTriggerPx: number;
734
891
  tpslIsMarket: boolean;
735
892
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
736
893
  dex?: string | undefined;
737
894
  network?: string | undefined;
895
+ strategy?: "scalp" | "ambush" | undefined;
738
896
  entryReduceOnly?: boolean | undefined;
739
897
  tpslLimitPx?: number | undefined;
740
898
  protectionReduceOnly?: boolean | undefined;
@@ -772,6 +930,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
772
930
  replenishGapPx: z.ZodOptional<z.ZodNumber>;
773
931
  /** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
774
932
  replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
933
+ /** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
934
+ regenerateGrid: z.ZodOptional<z.ZodBoolean>;
775
935
  legs: z.ZodArray<z.ZodObject<{
776
936
  index: z.ZodNumber;
777
937
  px: z.ZodNumber;
@@ -793,10 +953,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
793
953
  fillPx: number;
794
954
  }>>;
795
955
  }, "strip", z.ZodTypeAny, {
956
+ isBuy: boolean;
796
957
  index: number;
797
958
  px: number;
798
- isBuy: boolean;
799
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
959
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
800
960
  oid?: number | undefined;
801
961
  lastSz?: number | undefined;
802
962
  lastOrigSz?: number | undefined;
@@ -805,10 +965,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
805
965
  fillPx: number;
806
966
  } | undefined;
807
967
  }, {
968
+ isBuy: boolean;
808
969
  index: number;
809
970
  px: number;
810
- isBuy: boolean;
811
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
971
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
812
972
  oid?: number | undefined;
813
973
  lastSz?: number | undefined;
814
974
  lastOrigSz?: number | undefined;
@@ -823,7 +983,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
823
983
  id: string;
824
984
  createdAtMs: number;
825
985
  updatedAtMs: number;
826
- tif: "Ioc" | "Gtc" | "Alo";
986
+ tif: "Gtc" | "Ioc" | "Alo";
827
987
  lower: number;
828
988
  upper: number;
829
989
  grids: number;
@@ -831,10 +991,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
831
991
  bias: "symmetric" | "long" | "short";
832
992
  reduceOnly: boolean;
833
993
  legs: {
994
+ isBuy: boolean;
834
995
  index: number;
835
996
  px: number;
836
- isBuy: boolean;
837
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
997
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
838
998
  oid?: number | undefined;
839
999
  lastSz?: number | undefined;
840
1000
  lastOrigSz?: number | undefined;
@@ -848,13 +1008,14 @@ export declare const TradeStateFileSchema: z.ZodObject<{
848
1008
  maxOrders?: number | undefined;
849
1009
  replenishGapPx?: number | undefined;
850
1010
  replenishDedupeKeys?: string[] | undefined;
1011
+ regenerateGrid?: boolean | undefined;
851
1012
  }, {
852
1013
  coin: string;
853
1014
  kind: "grid";
854
1015
  id: string;
855
1016
  createdAtMs: number;
856
1017
  updatedAtMs: number;
857
- tif: "Ioc" | "Gtc" | "Alo";
1018
+ tif: "Gtc" | "Ioc" | "Alo";
858
1019
  lower: number;
859
1020
  upper: number;
860
1021
  grids: number;
@@ -862,10 +1023,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
862
1023
  bias: "symmetric" | "long" | "short";
863
1024
  reduceOnly: boolean;
864
1025
  legs: {
1026
+ isBuy: boolean;
865
1027
  index: number;
866
1028
  px: number;
867
- isBuy: boolean;
868
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
1029
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
869
1030
  oid?: number | undefined;
870
1031
  lastSz?: number | undefined;
871
1032
  lastOrigSz?: number | undefined;
@@ -879,6 +1040,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
879
1040
  maxOrders?: number | undefined;
880
1041
  replenishGapPx?: number | undefined;
881
1042
  replenishDedupeKeys?: string[] | undefined;
1043
+ regenerateGrid?: boolean | undefined;
882
1044
  }>, z.ZodObject<{
883
1045
  kind: z.ZodLiteral<"single_limit">;
884
1046
  id: z.ZodString;
@@ -900,11 +1062,11 @@ export declare const TradeStateFileSchema: z.ZodObject<{
900
1062
  createdAtMs: number;
901
1063
  updatedAtMs: number;
902
1064
  entrySide: "buy" | "sell";
903
- tif: "Ioc" | "Gtc" | "Alo";
1065
+ tif: "Gtc" | "Ioc" | "Alo";
904
1066
  reduceOnly: boolean;
905
1067
  limitPx: number;
906
- dex?: string | undefined;
907
1068
  oid?: number | undefined;
1069
+ dex?: string | undefined;
908
1070
  }, {
909
1071
  sz: number;
910
1072
  coin: string;
@@ -913,11 +1075,11 @@ export declare const TradeStateFileSchema: z.ZodObject<{
913
1075
  createdAtMs: number;
914
1076
  updatedAtMs: number;
915
1077
  entrySide: "buy" | "sell";
916
- tif: "Ioc" | "Gtc" | "Alo";
1078
+ tif: "Gtc" | "Ioc" | "Alo";
917
1079
  reduceOnly: boolean;
918
1080
  limitPx: number;
919
- dex?: string | undefined;
920
1081
  oid?: number | undefined;
1082
+ dex?: string | undefined;
921
1083
  }>, z.ZodObject<{
922
1084
  kind: z.ZodLiteral<"standalone_tpsl">;
923
1085
  id: z.ZodString;
@@ -945,8 +1107,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
945
1107
  triggerPx: number;
946
1108
  tpsl: "tp" | "sl";
947
1109
  isMarket: boolean;
948
- dex?: string | undefined;
949
1110
  oid?: number | undefined;
1111
+ dex?: string | undefined;
950
1112
  limitPx?: number | undefined;
951
1113
  }, {
952
1114
  side: "buy" | "sell";
@@ -960,8 +1122,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
960
1122
  triggerPx: number;
961
1123
  tpsl: "tp" | "sl";
962
1124
  isMarket: boolean;
963
- dex?: string | undefined;
964
1125
  oid?: number | undefined;
1126
+ dex?: string | undefined;
965
1127
  limitPx?: number | undefined;
966
1128
  }>]>>;
967
1129
  events: z.ZodArray<z.ZodObject<{
@@ -987,27 +1149,166 @@ export declare const TradeStateFileSchema: z.ZodObject<{
987
1149
  risk: z.ZodDefault<z.ZodEnum<["conservative", "balanced", "aggressive"]>>;
988
1150
  defaultMaxSz: z.ZodOptional<z.ZodNumber>;
989
1151
  maxSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1152
+ /** Advisor / bracket minimum sz floor (profile guard; HL $10 notional still applies). */
1153
+ defaultMinSz: z.ZodOptional<z.ZodNumber>;
1154
+ minSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
990
1155
  requireTpsl: z.ZodDefault<z.ZodBoolean>;
991
1156
  priceDeviationPctMax: z.ZodDefault<z.ZodNumber>;
992
1157
  tradingStyleNotes: z.ZodOptional<z.ZodString>;
993
1158
  updatedAtMs: z.ZodOptional<z.ZodNumber>;
1159
+ /** Optional isolated-margin auto top-up during `state reconcile` (default disabled). */
1160
+ isolatedTopUp: z.ZodOptional<z.ZodObject<{
1161
+ enabled: z.ZodDefault<z.ZodBoolean>;
1162
+ safeDistancePct: z.ZodDefault<z.ZodNumber>;
1163
+ safetyFactor: z.ZodDefault<z.ZodNumber>;
1164
+ reserveUsd: z.ZodDefault<z.ZodNumber>;
1165
+ minTopUpUsd: z.ZodDefault<z.ZodNumber>;
1166
+ minPartialUsd: z.ZodDefault<z.ZodNumber>;
1167
+ maxSingleTopUpUsd: z.ZodDefault<z.ZodNumber>;
1168
+ maxDailyTopUpUsd: z.ZodDefault<z.ZodNumber>;
1169
+ cooldownSec: z.ZodDefault<z.ZodNumber>;
1170
+ }, "strip", z.ZodTypeAny, {
1171
+ enabled: boolean;
1172
+ safeDistancePct: number;
1173
+ safetyFactor: number;
1174
+ reserveUsd: number;
1175
+ minTopUpUsd: number;
1176
+ minPartialUsd: number;
1177
+ maxSingleTopUpUsd: number;
1178
+ maxDailyTopUpUsd: number;
1179
+ cooldownSec: number;
1180
+ }, {
1181
+ enabled?: boolean | undefined;
1182
+ safeDistancePct?: number | undefined;
1183
+ safetyFactor?: number | undefined;
1184
+ reserveUsd?: number | undefined;
1185
+ minTopUpUsd?: number | undefined;
1186
+ minPartialUsd?: number | undefined;
1187
+ maxSingleTopUpUsd?: number | undefined;
1188
+ maxDailyTopUpUsd?: number | undefined;
1189
+ cooldownSec?: number | undefined;
1190
+ }>>;
1191
+ /** Min model confidence (0–1) required before `advise` execute / `--auto`. 0 = disabled. */
1192
+ minConfidenceToExecute: z.ZodOptional<z.ZodNumber>;
1193
+ /** Random limit-price offset fraction (e.g. 0.002 = up to ±0.2%). 0 = disabled. */
1194
+ limitPriceJitterPct: z.ZodOptional<z.ZodNumber>;
1195
+ /** Min seconds between same coin+action executions (open_with_bracket also keyed by side). 0 = disabled. */
1196
+ executeCooldownSec: z.ZodOptional<z.ZodNumber>;
1197
+ /**
1198
+ * Bracket entry shift toward model SL (0=off, 1=entry at SL, TP/SL translated equally).
1199
+ * Limit-only: unfilled = no position.
1200
+ */
1201
+ bracketSlEntryShift: z.ZodOptional<z.ZodNumber>;
1202
+ /** Relative limit deviation above which advise replaces a pending TTL ambush (default: priceDeviationPctMax). */
1203
+ ambushReplaceDeviationPct: z.ZodOptional<z.ZodNumber>;
1204
+ /** Min seconds after open before advise may close without TP/SL hit (0 = disabled). Applies to all bracket-linked positions. */
1205
+ antiRushCloseMinSec: z.ZodOptional<z.ZodNumber>;
1206
+ /** After entry fill, wait this long for reconcile to place TP/SL before allow close (default 360s ≈ one advise round). */
1207
+ protectionGraceSec: z.ZodOptional<z.ZodNumber>;
1208
+ /** Block close when |unrealized PnL| below this fraction of entry (e.g. 0.01 = 1%) unless tp_unreachable. */
1209
+ minClosePnlPct: z.ZodOptional<z.ZodNumber>;
1210
+ /** Min TP distance / SL distance from bracket entry (default by risk: conservative 2.5, balanced 2, aggressive 1.5). */
1211
+ minRewardRiskRatio: z.ZodOptional<z.ZodNumber>;
1212
+ /** Max SL distance from entry as fraction of entry px (default by risk: conservative 1.2%, balanced 2%, aggressive 3%). */
1213
+ maxSlPctFromEntry: z.ZodOptional<z.ZodNumber>;
1214
+ /** Block bracket when computed SL touch prob exceeds this (ATR barrier model). */
1215
+ maxSlTouchProb: z.ZodOptional<z.ZodNumber>;
1216
+ /** Block when SL touch prob × slSweepLiquidityMultiplier exceeds this (stop-hunt adjusted). */
1217
+ maxSlSweepProb: z.ZodOptional<z.ZodNumber>;
1218
+ /** Move SL away from structure by this × ATR₁h before execute (buy: down, sell: up). 0 = off. */
1219
+ slAntiSweepAtrFactor: z.ZodOptional<z.ZodNumber>;
1220
+ /** Multiplier on SL touch prob to approximate stop-hunt / AI sweep risk (default 2). */
1221
+ slSweepLiquidityMultiplier: z.ZodOptional<z.ZodNumber>;
1222
+ /** Default ambush TTL minutes when model omits expires_in_min (15–30 typical). */
1223
+ defaultAmbushExpiresMin: z.ZodOptional<z.ZodNumber>;
1224
+ /** Block cancel_all while unexpired TTL ambush entry is still pending (default true). */
1225
+ forbidCancelAllWithActiveAmbush: z.ZodDefault<z.ZodBoolean>;
994
1226
  }, "strip", z.ZodTypeAny, {
995
1227
  risk: "conservative" | "balanced" | "aggressive";
996
1228
  requireTpsl: boolean;
997
1229
  priceDeviationPctMax: number;
1230
+ forbidCancelAllWithActiveAmbush: boolean;
998
1231
  updatedAtMs?: number | undefined;
999
1232
  defaultMaxSz?: number | undefined;
1000
1233
  maxSzByCoin?: Record<string, number> | undefined;
1234
+ defaultMinSz?: number | undefined;
1235
+ minSzByCoin?: Record<string, number> | undefined;
1001
1236
  tradingStyleNotes?: string | undefined;
1237
+ isolatedTopUp?: {
1238
+ enabled: boolean;
1239
+ safeDistancePct: number;
1240
+ safetyFactor: number;
1241
+ reserveUsd: number;
1242
+ minTopUpUsd: number;
1243
+ minPartialUsd: number;
1244
+ maxSingleTopUpUsd: number;
1245
+ maxDailyTopUpUsd: number;
1246
+ cooldownSec: number;
1247
+ } | undefined;
1248
+ minConfidenceToExecute?: number | undefined;
1249
+ limitPriceJitterPct?: number | undefined;
1250
+ executeCooldownSec?: number | undefined;
1251
+ bracketSlEntryShift?: number | undefined;
1252
+ ambushReplaceDeviationPct?: number | undefined;
1253
+ antiRushCloseMinSec?: number | undefined;
1254
+ protectionGraceSec?: number | undefined;
1255
+ minClosePnlPct?: number | undefined;
1256
+ minRewardRiskRatio?: number | undefined;
1257
+ maxSlPctFromEntry?: number | undefined;
1258
+ maxSlTouchProb?: number | undefined;
1259
+ maxSlSweepProb?: number | undefined;
1260
+ slAntiSweepAtrFactor?: number | undefined;
1261
+ slSweepLiquidityMultiplier?: number | undefined;
1262
+ defaultAmbushExpiresMin?: number | undefined;
1002
1263
  }, {
1003
1264
  updatedAtMs?: number | undefined;
1004
1265
  risk?: "conservative" | "balanced" | "aggressive" | undefined;
1005
1266
  defaultMaxSz?: number | undefined;
1006
1267
  maxSzByCoin?: Record<string, number> | undefined;
1268
+ defaultMinSz?: number | undefined;
1269
+ minSzByCoin?: Record<string, number> | undefined;
1007
1270
  requireTpsl?: boolean | undefined;
1008
1271
  priceDeviationPctMax?: number | undefined;
1009
1272
  tradingStyleNotes?: string | undefined;
1273
+ isolatedTopUp?: {
1274
+ enabled?: boolean | undefined;
1275
+ safeDistancePct?: number | undefined;
1276
+ safetyFactor?: number | undefined;
1277
+ reserveUsd?: number | undefined;
1278
+ minTopUpUsd?: number | undefined;
1279
+ minPartialUsd?: number | undefined;
1280
+ maxSingleTopUpUsd?: number | undefined;
1281
+ maxDailyTopUpUsd?: number | undefined;
1282
+ cooldownSec?: number | undefined;
1283
+ } | undefined;
1284
+ minConfidenceToExecute?: number | undefined;
1285
+ limitPriceJitterPct?: number | undefined;
1286
+ executeCooldownSec?: number | undefined;
1287
+ bracketSlEntryShift?: number | undefined;
1288
+ ambushReplaceDeviationPct?: number | undefined;
1289
+ antiRushCloseMinSec?: number | undefined;
1290
+ protectionGraceSec?: number | undefined;
1291
+ minClosePnlPct?: number | undefined;
1292
+ minRewardRiskRatio?: number | undefined;
1293
+ maxSlPctFromEntry?: number | undefined;
1294
+ maxSlTouchProb?: number | undefined;
1295
+ maxSlSweepProb?: number | undefined;
1296
+ slAntiSweepAtrFactor?: number | undefined;
1297
+ slSweepLiquidityMultiplier?: number | undefined;
1298
+ defaultAmbushExpiresMin?: number | undefined;
1299
+ forbidCancelAllWithActiveAmbush?: boolean | undefined;
1010
1300
  }>>;
1301
+ /** Last successful advise execute per `${coin}:${action}` (cooldown guard). */
1302
+ adviseExecuteHistory: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1303
+ action: z.ZodString;
1304
+ atMs: z.ZodNumber;
1305
+ }, "strip", z.ZodTypeAny, {
1306
+ action: string;
1307
+ atMs: number;
1308
+ }, {
1309
+ action: string;
1310
+ atMs: number;
1311
+ }>>>;
1011
1312
  }, "strip", z.ZodTypeAny, {
1012
1313
  updatedAtMs: number;
1013
1314
  version: 1;
@@ -1020,7 +1321,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1020
1321
  entrySide: "buy" | "sell";
1021
1322
  entryLimitPx: number;
1022
1323
  entrySz: number;
1023
- tif: "Ioc" | "Gtc" | "Alo";
1324
+ tif: "Gtc" | "Ioc" | "Alo";
1024
1325
  tpTriggerPx: number;
1025
1326
  slTriggerPx: number;
1026
1327
  tpslIsMarket: boolean;
@@ -1028,6 +1329,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1028
1329
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
1029
1330
  dex?: string | undefined;
1030
1331
  network?: string | undefined;
1332
+ strategy?: "scalp" | "ambush" | undefined;
1031
1333
  entryReduceOnly?: boolean | undefined;
1032
1334
  tpslLimitPx?: number | undefined;
1033
1335
  entryOid?: number | undefined;
@@ -1046,7 +1348,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1046
1348
  id: string;
1047
1349
  createdAtMs: number;
1048
1350
  updatedAtMs: number;
1049
- tif: "Ioc" | "Gtc" | "Alo";
1351
+ tif: "Gtc" | "Ioc" | "Alo";
1050
1352
  lower: number;
1051
1353
  upper: number;
1052
1354
  grids: number;
@@ -1054,10 +1356,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1054
1356
  bias: "symmetric" | "long" | "short";
1055
1357
  reduceOnly: boolean;
1056
1358
  legs: {
1359
+ isBuy: boolean;
1057
1360
  index: number;
1058
1361
  px: number;
1059
- isBuy: boolean;
1060
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
1362
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
1061
1363
  oid?: number | undefined;
1062
1364
  lastSz?: number | undefined;
1063
1365
  lastOrigSz?: number | undefined;
@@ -1071,6 +1373,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1071
1373
  maxOrders?: number | undefined;
1072
1374
  replenishGapPx?: number | undefined;
1073
1375
  replenishDedupeKeys?: string[] | undefined;
1376
+ regenerateGrid?: boolean | undefined;
1074
1377
  } | {
1075
1378
  sz: number;
1076
1379
  coin: string;
@@ -1079,11 +1382,11 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1079
1382
  createdAtMs: number;
1080
1383
  updatedAtMs: number;
1081
1384
  entrySide: "buy" | "sell";
1082
- tif: "Ioc" | "Gtc" | "Alo";
1385
+ tif: "Gtc" | "Ioc" | "Alo";
1083
1386
  reduceOnly: boolean;
1084
1387
  limitPx: number;
1085
- dex?: string | undefined;
1086
1388
  oid?: number | undefined;
1389
+ dex?: string | undefined;
1087
1390
  } | {
1088
1391
  side: "buy" | "sell";
1089
1392
  sz: number;
@@ -1096,8 +1399,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1096
1399
  triggerPx: number;
1097
1400
  tpsl: "tp" | "sl";
1098
1401
  isMarket: boolean;
1099
- dex?: string | undefined;
1100
1402
  oid?: number | undefined;
1403
+ dex?: string | undefined;
1101
1404
  limitPx?: number | undefined;
1102
1405
  }>;
1103
1406
  events: {
@@ -1111,11 +1414,44 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1111
1414
  risk: "conservative" | "balanced" | "aggressive";
1112
1415
  requireTpsl: boolean;
1113
1416
  priceDeviationPctMax: number;
1417
+ forbidCancelAllWithActiveAmbush: boolean;
1114
1418
  updatedAtMs?: number | undefined;
1115
1419
  defaultMaxSz?: number | undefined;
1116
1420
  maxSzByCoin?: Record<string, number> | undefined;
1421
+ defaultMinSz?: number | undefined;
1422
+ minSzByCoin?: Record<string, number> | undefined;
1117
1423
  tradingStyleNotes?: string | undefined;
1424
+ isolatedTopUp?: {
1425
+ enabled: boolean;
1426
+ safeDistancePct: number;
1427
+ safetyFactor: number;
1428
+ reserveUsd: number;
1429
+ minTopUpUsd: number;
1430
+ minPartialUsd: number;
1431
+ maxSingleTopUpUsd: number;
1432
+ maxDailyTopUpUsd: number;
1433
+ cooldownSec: number;
1434
+ } | undefined;
1435
+ minConfidenceToExecute?: number | undefined;
1436
+ limitPriceJitterPct?: number | undefined;
1437
+ executeCooldownSec?: number | undefined;
1438
+ bracketSlEntryShift?: number | undefined;
1439
+ ambushReplaceDeviationPct?: number | undefined;
1440
+ antiRushCloseMinSec?: number | undefined;
1441
+ protectionGraceSec?: number | undefined;
1442
+ minClosePnlPct?: number | undefined;
1443
+ minRewardRiskRatio?: number | undefined;
1444
+ maxSlPctFromEntry?: number | undefined;
1445
+ maxSlTouchProb?: number | undefined;
1446
+ maxSlSweepProb?: number | undefined;
1447
+ slAntiSweepAtrFactor?: number | undefined;
1448
+ slSweepLiquidityMultiplier?: number | undefined;
1449
+ defaultAmbushExpiresMin?: number | undefined;
1118
1450
  } | undefined;
1451
+ adviseExecuteHistory?: Record<string, {
1452
+ action: string;
1453
+ atMs: number;
1454
+ }> | undefined;
1119
1455
  }, {
1120
1456
  updatedAtMs: number;
1121
1457
  version: 1;
@@ -1128,13 +1464,14 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1128
1464
  entrySide: "buy" | "sell";
1129
1465
  entryLimitPx: number;
1130
1466
  entrySz: number;
1131
- tif: "Ioc" | "Gtc" | "Alo";
1467
+ tif: "Gtc" | "Ioc" | "Alo";
1132
1468
  tpTriggerPx: number;
1133
1469
  slTriggerPx: number;
1134
1470
  tpslIsMarket: boolean;
1135
1471
  phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
1136
1472
  dex?: string | undefined;
1137
1473
  network?: string | undefined;
1474
+ strategy?: "scalp" | "ambush" | undefined;
1138
1475
  entryReduceOnly?: boolean | undefined;
1139
1476
  tpslLimitPx?: number | undefined;
1140
1477
  protectionReduceOnly?: boolean | undefined;
@@ -1154,7 +1491,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1154
1491
  id: string;
1155
1492
  createdAtMs: number;
1156
1493
  updatedAtMs: number;
1157
- tif: "Ioc" | "Gtc" | "Alo";
1494
+ tif: "Gtc" | "Ioc" | "Alo";
1158
1495
  lower: number;
1159
1496
  upper: number;
1160
1497
  grids: number;
@@ -1162,10 +1499,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1162
1499
  bias: "symmetric" | "long" | "short";
1163
1500
  reduceOnly: boolean;
1164
1501
  legs: {
1502
+ isBuy: boolean;
1165
1503
  index: number;
1166
1504
  px: number;
1167
- isBuy: boolean;
1168
- legPhase: "cancelled" | "pending" | "open" | "partial" | "filled";
1505
+ legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
1169
1506
  oid?: number | undefined;
1170
1507
  lastSz?: number | undefined;
1171
1508
  lastOrigSz?: number | undefined;
@@ -1179,6 +1516,7 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1179
1516
  maxOrders?: number | undefined;
1180
1517
  replenishGapPx?: number | undefined;
1181
1518
  replenishDedupeKeys?: string[] | undefined;
1519
+ regenerateGrid?: boolean | undefined;
1182
1520
  } | {
1183
1521
  sz: number;
1184
1522
  coin: string;
@@ -1187,11 +1525,11 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1187
1525
  createdAtMs: number;
1188
1526
  updatedAtMs: number;
1189
1527
  entrySide: "buy" | "sell";
1190
- tif: "Ioc" | "Gtc" | "Alo";
1528
+ tif: "Gtc" | "Ioc" | "Alo";
1191
1529
  reduceOnly: boolean;
1192
1530
  limitPx: number;
1193
- dex?: string | undefined;
1194
1531
  oid?: number | undefined;
1532
+ dex?: string | undefined;
1195
1533
  } | {
1196
1534
  side: "buy" | "sell";
1197
1535
  sz: number;
@@ -1204,8 +1542,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1204
1542
  triggerPx: number;
1205
1543
  tpsl: "tp" | "sl";
1206
1544
  isMarket: boolean;
1207
- dex?: string | undefined;
1208
1545
  oid?: number | undefined;
1546
+ dex?: string | undefined;
1209
1547
  limitPx?: number | undefined;
1210
1548
  }>;
1211
1549
  events: {
@@ -1220,10 +1558,43 @@ export declare const TradeStateFileSchema: z.ZodObject<{
1220
1558
  risk?: "conservative" | "balanced" | "aggressive" | undefined;
1221
1559
  defaultMaxSz?: number | undefined;
1222
1560
  maxSzByCoin?: Record<string, number> | undefined;
1561
+ defaultMinSz?: number | undefined;
1562
+ minSzByCoin?: Record<string, number> | undefined;
1223
1563
  requireTpsl?: boolean | undefined;
1224
1564
  priceDeviationPctMax?: number | undefined;
1225
1565
  tradingStyleNotes?: string | undefined;
1566
+ isolatedTopUp?: {
1567
+ enabled?: boolean | undefined;
1568
+ safeDistancePct?: number | undefined;
1569
+ safetyFactor?: number | undefined;
1570
+ reserveUsd?: number | undefined;
1571
+ minTopUpUsd?: number | undefined;
1572
+ minPartialUsd?: number | undefined;
1573
+ maxSingleTopUpUsd?: number | undefined;
1574
+ maxDailyTopUpUsd?: number | undefined;
1575
+ cooldownSec?: number | undefined;
1576
+ } | undefined;
1577
+ minConfidenceToExecute?: number | undefined;
1578
+ limitPriceJitterPct?: number | undefined;
1579
+ executeCooldownSec?: number | undefined;
1580
+ bracketSlEntryShift?: number | undefined;
1581
+ ambushReplaceDeviationPct?: number | undefined;
1582
+ antiRushCloseMinSec?: number | undefined;
1583
+ protectionGraceSec?: number | undefined;
1584
+ minClosePnlPct?: number | undefined;
1585
+ minRewardRiskRatio?: number | undefined;
1586
+ maxSlPctFromEntry?: number | undefined;
1587
+ maxSlTouchProb?: number | undefined;
1588
+ maxSlSweepProb?: number | undefined;
1589
+ slAntiSweepAtrFactor?: number | undefined;
1590
+ slSweepLiquidityMultiplier?: number | undefined;
1591
+ defaultAmbushExpiresMin?: number | undefined;
1592
+ forbidCancelAllWithActiveAmbush?: boolean | undefined;
1226
1593
  } | undefined;
1594
+ adviseExecuteHistory?: Record<string, {
1595
+ action: string;
1596
+ atMs: number;
1597
+ }> | undefined;
1227
1598
  }>;
1228
1599
  export type TradeStateFile = z.infer<typeof TradeStateFileSchema>;
1229
1600
  export declare function createEmptyTradeState(nowMs: number): TradeStateFile;