openbroker 1.9.6 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +52 -0
  3. package/SKILL.md +57 -5
  4. package/bin/cli.ts +11 -0
  5. package/dist/auto/examples/grid.js +1 -1
  6. package/dist/auto/examples/mm-maker.js +4 -4
  7. package/dist/auto/examples/mm-spread.js +4 -4
  8. package/dist/core/client.d.ts +83 -32
  9. package/dist/core/client.d.ts.map +1 -1
  10. package/dist/core/client.js +214 -29
  11. package/dist/core/types.d.ts +22 -0
  12. package/dist/core/types.d.ts.map +1 -1
  13. package/dist/core/utils.d.ts +29 -0
  14. package/dist/core/utils.d.ts.map +1 -1
  15. package/dist/core/utils.js +27 -0
  16. package/dist/core/ws.d.ts +5 -0
  17. package/dist/core/ws.d.ts.map +1 -1
  18. package/dist/core/ws.js +9 -7
  19. package/dist/guardian/cli.d.ts +2 -0
  20. package/dist/guardian/cli.d.ts.map +1 -0
  21. package/dist/guardian/cli.js +288 -0
  22. package/dist/guardian/engine.d.ts +107 -0
  23. package/dist/guardian/engine.d.ts.map +1 -0
  24. package/dist/guardian/engine.js +526 -0
  25. package/dist/guardian/rules.d.ts +35 -0
  26. package/dist/guardian/rules.d.ts.map +1 -0
  27. package/dist/guardian/rules.js +237 -0
  28. package/dist/guardian/telegram.d.ts +24 -0
  29. package/dist/guardian/telegram.d.ts.map +1 -0
  30. package/dist/guardian/telegram.js +125 -0
  31. package/dist/guardian/types.d.ts +90 -0
  32. package/dist/guardian/types.d.ts.map +1 -0
  33. package/dist/guardian/types.js +45 -0
  34. package/dist/lib.d.ts +10 -1
  35. package/dist/lib.d.ts.map +1 -1
  36. package/dist/lib.js +6 -1
  37. package/dist/operations/advanced-orders.test.js +302 -13
  38. package/dist/operations/bracket.d.ts +35 -5
  39. package/dist/operations/bracket.d.ts.map +1 -1
  40. package/dist/operations/bracket.js +238 -64
  41. package/dist/operations/cancel.js +4 -1
  42. package/dist/operations/chase.d.ts +4 -2
  43. package/dist/operations/chase.d.ts.map +1 -1
  44. package/dist/operations/chase.js +61 -24
  45. package/dist/operations/scale.d.ts.map +1 -1
  46. package/dist/operations/scale.js +10 -1
  47. package/dist/operations/set-tpsl.js +69 -57
  48. package/dist/operations/trigger-order.js +18 -6
  49. package/dist/operations/twap.js +13 -1
  50. package/package.json +2 -2
  51. package/scripts/auto/examples/grid.ts +1 -1
  52. package/scripts/auto/examples/mm-maker.ts +4 -4
  53. package/scripts/auto/examples/mm-spread.ts +4 -4
  54. package/scripts/core/client.ts +278 -33
  55. package/scripts/core/types.ts +23 -0
  56. package/scripts/core/utils.ts +37 -0
  57. package/scripts/core/ws.ts +9 -6
  58. package/scripts/guardian/cli.ts +322 -0
  59. package/scripts/guardian/engine.ts +614 -0
  60. package/scripts/guardian/rules.ts +265 -0
  61. package/scripts/guardian/telegram.ts +147 -0
  62. package/scripts/guardian/types.ts +160 -0
  63. package/scripts/lib.ts +36 -0
  64. package/scripts/operations/advanced-orders.test.ts +347 -14
  65. package/scripts/operations/bracket.ts +252 -73
  66. package/scripts/operations/cancel.ts +4 -1
  67. package/scripts/operations/chase.ts +61 -26
  68. package/scripts/operations/scale.ts +10 -1
  69. package/scripts/operations/set-tpsl.ts +62 -57
  70. package/scripts/operations/trigger-order.ts +20 -6
  71. package/scripts/operations/twap.ts +14 -1
@@ -3,7 +3,7 @@
3
3
  import { HttpTransport, InfoClient, ExchangeClient } from '@nktkas/hyperliquid';
4
4
  import { privateKeyToAccount } from 'viem/accounts';
5
5
  import { loadConfig, isMainnet } from './config.js';
6
- import { roundPrice, roundSize } from './utils.js';
6
+ import { MIN_ORDER_NOTIONAL_USD, roundPrice, roundSize } from './utils.js';
7
7
  export class HyperliquidClient {
8
8
  config;
9
9
  account;
@@ -1699,6 +1699,18 @@ export class HyperliquidClient {
1699
1699
  }
1700
1700
  return orders;
1701
1701
  }
1702
+ /**
1703
+ * Open orders with frontend display fields (isTrigger, reduceOnly,
1704
+ * isPositionTpsl, …) for one dex — empty/omitted dex = main. Unlike
1705
+ * getOpenOrders this does NOT aggregate HIP-3 dexes; callers that need a
1706
+ * HIP-3 book pass its dex name explicitly.
1707
+ */
1708
+ async getFrontendOpenOrders(user, dex) {
1709
+ const target = (user ?? this.address);
1710
+ this.log('Fetching frontendOpenOrders for:', target, dex ? `(dex: ${dex})` : '');
1711
+ const response = await this.withRetry(() => this.info.frontendOpenOrders(dex ? { user: target, dex } : { user: target }), 'frontendOpenOrders');
1712
+ return response;
1713
+ }
1702
1714
  // ============ Trading ============
1703
1715
  /**
1704
1716
  * HIP-3 perps: prepare for trading.
@@ -1877,8 +1889,10 @@ export class HyperliquidClient {
1877
1889
  * @param limitPrice - Limit price for the order (use triggerPrice for market-like execution)
1878
1890
  * @param tpsl - 'tp' for take profit, 'sl' for stop loss
1879
1891
  * @param reduceOnly - Whether order is reduce-only (should be true for TP/SL)
1892
+ * @param isMarket - Execute as a market trigger on fire; limitPrice then only
1893
+ * caps the fill (slippage band) instead of resting on the book
1880
1894
  */
1881
- async triggerOrder(coin, isBuy, size, triggerPrice, limitPrice, tpsl, reduceOnly = true, leverage) {
1895
+ async triggerOrder(coin, isBuy, size, triggerPrice, limitPrice, tpsl, reduceOnly = true, leverage, isMarket = false) {
1882
1896
  await this.requireTrading();
1883
1897
  await this.getMetaAndAssetCtxs();
1884
1898
  // Set leverage if specified (for main perps)
@@ -1890,9 +1904,8 @@ export class HyperliquidClient {
1890
1904
  await this.ensureHip3Ready(coin, size * limitPrice, leverage);
1891
1905
  const assetIndex = this.getAssetIndex(coin);
1892
1906
  const szDecimals = this.getSzDecimals(coin);
1893
- // For trigger orders, we use the trigger order type
1894
- // isMarket: false means it becomes a limit order at limitPrice when triggered
1895
- // For stop loss, we typically want some slippage protection
1907
+ // isMarket: true fires as a market order capped by limitPrice (slippage band);
1908
+ // isMarket: false rests as a limit order at limitPrice once triggered.
1896
1909
  const orderWire = {
1897
1910
  a: assetIndex,
1898
1911
  b: isBuy,
@@ -1902,7 +1915,7 @@ export class HyperliquidClient {
1902
1915
  t: {
1903
1916
  trigger: {
1904
1917
  triggerPx: roundPrice(triggerPrice, szDecimals),
1905
- isMarket: false,
1918
+ isMarket,
1906
1919
  tpsl,
1907
1920
  },
1908
1921
  },
@@ -1931,17 +1944,23 @@ export class HyperliquidClient {
1931
1944
  }
1932
1945
  }
1933
1946
  /**
1934
- * Place a stop loss order
1947
+ * Place a stop loss order.
1948
+ *
1949
+ * Executes as a market trigger by default: in a gap move that jumps past the
1950
+ * trigger, a stop-limit's band can be skipped entirely and the position sits
1951
+ * unprotected — the exact scenario an SL exists for. The limit price still
1952
+ * caps the fill at `slippageBps` past the trigger. Pass `isMarket: false`
1953
+ * for the stop-limit variant (rests at the band price once triggered).
1935
1954
  */
1936
- async stopLoss(coin, isBuy, size, triggerPrice, slippageBps = 100 // 1% slippage for SL execution
1937
- ) {
1938
- // For stop loss, limit price should be worse than trigger to ensure fill
1955
+ async stopLoss(coin, isBuy, size, triggerPrice, slippageBps = 100, // 1% slippage cap for SL execution
1956
+ isMarket = true) {
1957
+ // Limit price sits worse than trigger to ensure fill
1939
1958
  // Buy SL: limit above trigger, Sell SL: limit below trigger
1940
1959
  const slippageMult = slippageBps / 10000;
1941
1960
  const limitPrice = isBuy
1942
1961
  ? triggerPrice * (1 + slippageMult)
1943
1962
  : triggerPrice * (1 - slippageMult);
1944
- return this.triggerOrder(coin, isBuy, size, triggerPrice, limitPrice, 'sl', true);
1963
+ return this.triggerOrder(coin, isBuy, size, triggerPrice, limitPrice, 'sl', true, undefined, isMarket);
1945
1964
  }
1946
1965
  /**
1947
1966
  * Place a take profit order
@@ -1951,11 +1970,27 @@ export class HyperliquidClient {
1951
1970
  return this.triggerOrder(coin, isBuy, size, triggerPrice, triggerPrice, 'tp', true);
1952
1971
  }
1953
1972
  /**
1954
- * Place a paired TP/SL trigger set using Hyperliquid's normalTpsl grouping.
1955
- * The two orders are submitted together so the venue treats them as a linked
1956
- * bracket pair instead of two unrelated reduce-only triggers.
1973
+ * Place TP and/or SL triggers for an open position in one batch.
1974
+ *
1975
+ * Defaults to Hyperliquid's `positionTpsl` grouping: the triggers are tied
1976
+ * to the open position (cancelled when it closes, OCO between themselves)
1977
+ * — the same mechanism the Hyperliquid frontend uses for position TP/SL.
1978
+ * `normalTpsl` is available for a standalone OCO pair not bound to the
1979
+ * position. SL executes as a market trigger by default with the limit price
1980
+ * capping the fill `slSlippageBps` past the trigger (see `stopLoss`).
1981
+ *
1982
+ * `isBuy` is the EXIT side (opposite of the position direction). Statuses
1983
+ * in the response align with the orders sent: TP first (when present),
1984
+ * then SL.
1957
1985
  */
1958
- async tpslPair(coin, isBuy, size, takeProfitPrice, stopLossPrice, stopLossSlippageBps = 100, leverage) {
1986
+ async tpslOrders(coin, isBuy, size, opts = {}) {
1987
+ const { takeProfitPrice, stopLossPrice, leverage } = opts;
1988
+ const stopLossSlippageBps = opts.stopLossSlippageBps ?? 100;
1989
+ const stopLossIsMarket = opts.stopLossIsMarket ?? true;
1990
+ const grouping = opts.grouping ?? 'positionTpsl';
1991
+ if (takeProfitPrice === undefined && stopLossPrice === undefined) {
1992
+ throw new Error('tpslOrders requires takeProfitPrice, stopLossPrice, or both');
1993
+ }
1959
1994
  await this.requireTrading();
1960
1995
  await this.getMetaAndAssetCtxs();
1961
1996
  if (leverage && !this.isHip3(coin)) {
@@ -1963,15 +1998,19 @@ export class HyperliquidClient {
1963
1998
  await this.updateLeverage(coin, leverage, true);
1964
1999
  }
1965
2000
  const slippageMult = stopLossSlippageBps / 10000;
1966
- const stopLossLimitPrice = isBuy
1967
- ? stopLossPrice * (1 + slippageMult)
1968
- : stopLossPrice * (1 - slippageMult);
1969
- await this.ensureHip3Ready(coin, size * Math.max(takeProfitPrice, stopLossLimitPrice), leverage);
2001
+ const stopLossLimitPrice = stopLossPrice === undefined
2002
+ ? undefined
2003
+ : isBuy
2004
+ ? stopLossPrice * (1 + slippageMult)
2005
+ : stopLossPrice * (1 - slippageMult);
2006
+ const worstPrice = Math.max(takeProfitPrice ?? 0, stopLossLimitPrice ?? 0);
2007
+ await this.ensureHip3Ready(coin, size * worstPrice, leverage);
1970
2008
  const assetIndex = this.getAssetIndex(coin);
1971
2009
  const szDecimals = this.getSzDecimals(coin);
1972
2010
  const roundedSize = roundSize(size, szDecimals);
1973
- const orderWires = [
1974
- {
2011
+ const orderWires = [];
2012
+ if (takeProfitPrice !== undefined) {
2013
+ orderWires.push({
1975
2014
  a: assetIndex,
1976
2015
  b: isBuy,
1977
2016
  p: roundPrice(takeProfitPrice, szDecimals),
@@ -1984,8 +2023,10 @@ export class HyperliquidClient {
1984
2023
  tpsl: 'tp',
1985
2024
  },
1986
2025
  },
1987
- },
1988
- {
2026
+ });
2027
+ }
2028
+ if (stopLossPrice !== undefined) {
2029
+ orderWires.push({
1989
2030
  a: assetIndex,
1990
2031
  b: isBuy,
1991
2032
  p: roundPrice(stopLossLimitPrice, szDecimals),
@@ -1994,12 +2035,126 @@ export class HyperliquidClient {
1994
2035
  t: {
1995
2036
  trigger: {
1996
2037
  triggerPx: roundPrice(stopLossPrice, szDecimals),
1997
- isMarket: false,
2038
+ isMarket: stopLossIsMarket,
1998
2039
  tpsl: 'sl',
1999
2040
  },
2000
2041
  },
2042
+ });
2043
+ }
2044
+ const orderRequest = {
2045
+ orders: orderWires,
2046
+ grouping,
2047
+ };
2048
+ if (!this.isTestnet && this.config.builderAddress !== '0x0000000000000000000000000000000000000000') {
2049
+ orderRequest.builder = this.builderInfo;
2050
+ this.log('Including builder fee:', this.builderInfo);
2051
+ }
2052
+ try {
2053
+ const response = await this.exchange.order(orderRequest, this.vaultParam);
2054
+ this.log('TP/SL orders response:', JSON.stringify(response, null, 2));
2055
+ return response;
2056
+ }
2057
+ catch (error) {
2058
+ this.log('TP/SL orders error:', error);
2059
+ return {
2060
+ status: 'err',
2061
+ response: error instanceof Error ? error.message : String(error),
2062
+ };
2063
+ }
2064
+ }
2065
+ /**
2066
+ * Place a paired TP/SL trigger set for an open position.
2067
+ *
2068
+ * Back-compat wrapper over `tpslOrders`. Since v1.10.0 this uses the
2069
+ * `positionTpsl` grouping (triggers track the open position and OCO-cancel)
2070
+ * instead of a standalone `normalTpsl` pair, and the SL fires as a market
2071
+ * trigger capped by the slippage band instead of a stop-limit.
2072
+ */
2073
+ async tpslPair(coin, isBuy, size, takeProfitPrice, stopLossPrice, stopLossSlippageBps = 100, leverage) {
2074
+ return this.tpslOrders(coin, isBuy, size, {
2075
+ takeProfitPrice,
2076
+ stopLossPrice,
2077
+ stopLossSlippageBps,
2078
+ leverage,
2079
+ });
2080
+ }
2081
+ /**
2082
+ * Atomic bracket: a limit entry with TP/SL children in one `normalTpsl`
2083
+ * batch — exactly how the Hyperliquid frontend does order-attached TP/SL.
2084
+ * The children arm only when the entry fills and are sized to it; their
2085
+ * statuses come back as the plain strings "waitingForFill" /
2086
+ * "waitingForTrigger" (parse with `parseOrderStatus`).
2087
+ *
2088
+ * `isBuy` is the ENTRY side; exits are placed on the opposite side,
2089
+ * reduce-only. Statuses align with [entry, tp?, sl?].
2090
+ */
2091
+ async bracketOrder(coin, isBuy, size, entryPrice, opts = {}) {
2092
+ const { takeProfitPrice, stopLossPrice, leverage } = opts;
2093
+ const entryTif = opts.entryTif ?? 'Gtc';
2094
+ const stopLossSlippageBps = opts.stopLossSlippageBps ?? 100;
2095
+ const stopLossIsMarket = opts.stopLossIsMarket ?? true;
2096
+ if (takeProfitPrice === undefined && stopLossPrice === undefined) {
2097
+ throw new Error('bracketOrder requires takeProfitPrice, stopLossPrice, or both');
2098
+ }
2099
+ await this.requireTrading();
2100
+ await this.getMetaAndAssetCtxs();
2101
+ if (leverage && !this.isHip3(coin)) {
2102
+ this.log(`Setting leverage for ${coin} to ${leverage}x cross`);
2103
+ await this.updateLeverage(coin, leverage, true);
2104
+ }
2105
+ await this.ensureHip3Ready(coin, size * entryPrice, leverage);
2106
+ const assetIndex = this.getAssetIndex(coin);
2107
+ const szDecimals = this.getSzDecimals(coin);
2108
+ const roundedSize = roundSize(size, szDecimals);
2109
+ const exitBuy = !isBuy;
2110
+ const slippageMult = stopLossSlippageBps / 10000;
2111
+ const stopLossLimitPrice = stopLossPrice === undefined
2112
+ ? undefined
2113
+ : exitBuy
2114
+ ? stopLossPrice * (1 + slippageMult)
2115
+ : stopLossPrice * (1 - slippageMult);
2116
+ const orderWires = [
2117
+ {
2118
+ a: assetIndex,
2119
+ b: isBuy,
2120
+ p: roundPrice(entryPrice, szDecimals),
2121
+ s: roundedSize,
2122
+ r: false,
2123
+ t: { limit: { tif: entryTif } },
2001
2124
  },
2002
2125
  ];
2126
+ if (takeProfitPrice !== undefined) {
2127
+ orderWires.push({
2128
+ a: assetIndex,
2129
+ b: exitBuy,
2130
+ p: roundPrice(takeProfitPrice, szDecimals),
2131
+ s: roundedSize,
2132
+ r: true,
2133
+ t: {
2134
+ trigger: {
2135
+ triggerPx: roundPrice(takeProfitPrice, szDecimals),
2136
+ isMarket: false,
2137
+ tpsl: 'tp',
2138
+ },
2139
+ },
2140
+ });
2141
+ }
2142
+ if (stopLossPrice !== undefined) {
2143
+ orderWires.push({
2144
+ a: assetIndex,
2145
+ b: exitBuy,
2146
+ p: roundPrice(stopLossLimitPrice, szDecimals),
2147
+ s: roundedSize,
2148
+ r: true,
2149
+ t: {
2150
+ trigger: {
2151
+ triggerPx: roundPrice(stopLossPrice, szDecimals),
2152
+ isMarket: stopLossIsMarket,
2153
+ tpsl: 'sl',
2154
+ },
2155
+ },
2156
+ });
2157
+ }
2003
2158
  const orderRequest = {
2004
2159
  orders: orderWires,
2005
2160
  grouping: 'normalTpsl',
@@ -2010,25 +2165,32 @@ export class HyperliquidClient {
2010
2165
  }
2011
2166
  try {
2012
2167
  const response = await this.exchange.order(orderRequest, this.vaultParam);
2013
- this.log('TP/SL pair response:', JSON.stringify(response, null, 2));
2168
+ this.log('Bracket order response:', JSON.stringify(response, null, 2));
2014
2169
  return response;
2015
2170
  }
2016
2171
  catch (error) {
2017
- this.log('TP/SL pair error:', error);
2172
+ this.log('Bracket order error:', error);
2018
2173
  return {
2019
2174
  status: 'err',
2020
2175
  response: error instanceof Error ? error.message : String(error),
2021
2176
  };
2022
2177
  }
2023
2178
  }
2024
- async cancel(coin, oid) {
2179
+ /**
2180
+ * `fast: true` sets the action's `f` flag so the mempool prioritizes the cancel
2181
+ * (post-2026-07 upgrade, only fast cancels get prioritization). The API REJECTS
2182
+ * fast cancels for trigger orders (TP/SL), so only pass it when the oid is known
2183
+ * to be a plain resting limit — e.g. a quoting loop cancelling its own quotes.
2184
+ */
2185
+ async cancel(coin, oid, opts) {
2025
2186
  await this.requireTrading();
2026
2187
  await this.getMetaAndAssetCtxs();
2027
2188
  const assetIndex = this.getAssetIndex(coin);
2028
- this.log(`Cancelling order: ${coin} (asset ${assetIndex}) oid ${oid}`);
2189
+ this.log(`Cancelling order: ${coin} (asset ${assetIndex}) oid ${oid}${opts?.fast ? ' (fast)' : ''}`);
2029
2190
  try {
2030
2191
  const response = await this.exchange.cancel({
2031
2192
  cancels: [{ a: assetIndex, o: oid }],
2193
+ ...(opts?.fast ? { f: true } : {}),
2032
2194
  }, this.vaultParam);
2033
2195
  this.log('Cancel response:', JSON.stringify(response, null, 2));
2034
2196
  return response;
@@ -2044,8 +2206,9 @@ export class HyperliquidClient {
2044
2206
  /**
2045
2207
  * Cancel MANY resting orders in a SINGLE exchange request (one action-rate request for ≤40 cancels),
2046
2208
  * the counterpart to `bulkOrder`. `response.data.statuses[i]` aligns with `cancels[i]`.
2209
+ * `fast` applies to the whole action and is rejected for trigger orders — see cancel().
2047
2210
  */
2048
- async bulkCancel(cancels) {
2211
+ async bulkCancel(cancels, opts) {
2049
2212
  await this.requireTrading();
2050
2213
  await this.getMetaAndAssetCtxs();
2051
2214
  if (cancels.length === 0)
@@ -2053,6 +2216,7 @@ export class HyperliquidClient {
2053
2216
  try {
2054
2217
  const response = await this.exchange.cancel({
2055
2218
  cancels: cancels.map((c) => ({ a: this.getAssetIndex(c.coin), o: c.oid })),
2219
+ ...(opts?.fast ? { f: true } : {}),
2056
2220
  }, this.vaultParam);
2057
2221
  this.log('Bulk cancel response:', JSON.stringify(response, null, 2));
2058
2222
  return response;
@@ -2341,6 +2505,27 @@ export class HyperliquidClient {
2341
2505
  */
2342
2506
  async twapOrder(coin, isBuy, size, durationMinutes, randomize = true, reduceOnly = false, leverage) {
2343
2507
  await this.getMetaAndAssetCtxs();
2508
+ if (!Number.isFinite(durationMinutes) || durationMinutes < 5 || durationMinutes > 1440) {
2509
+ throw new Error('TWAP duration must be between 5 and 1440 minutes');
2510
+ }
2511
+ // Native TWAP fires a sub-order every 30s; each must clear the exchange
2512
+ // minimum notional or the venue silently skips slices.
2513
+ if (!reduceOnly) {
2514
+ try {
2515
+ const mid = parseFloat((await this.getAllMids())[coin]);
2516
+ if (Number.isFinite(mid) && mid > 0) {
2517
+ const perSlice = (size * mid) / Math.max(1, Math.round(durationMinutes) * 2);
2518
+ if (perSlice < MIN_ORDER_NOTIONAL_USD) {
2519
+ throw new Error(`TWAP slices of ~$${perSlice.toFixed(2)} fall below the $${MIN_ORDER_NOTIONAL_USD} exchange minimum — shorten the duration or increase the size`);
2520
+ }
2521
+ }
2522
+ }
2523
+ catch (error) {
2524
+ if (error instanceof Error && error.message.includes('exchange minimum'))
2525
+ throw error;
2526
+ this.log('TWAP min-notional pre-check skipped (no mid available):', error);
2527
+ }
2528
+ }
2344
2529
  if (leverage) {
2345
2530
  await this.updateLeverage(coin, leverage);
2346
2531
  }
@@ -210,6 +210,28 @@ export interface OpenOrder {
210
210
  origSz: string;
211
211
  timestamp: number;
212
212
  }
213
+ /**
214
+ * Open order from the `frontendOpenOrders` info endpoint — same as OpenOrder
215
+ * plus the trigger/reduce-only display fields (needed to distinguish resting
216
+ * TP/SL protection from plain limit orders).
217
+ */
218
+ export interface FrontendOpenOrder {
219
+ coin: string;
220
+ side: 'B' | 'A';
221
+ limitPx: string;
222
+ sz: string;
223
+ oid: number;
224
+ timestamp: number;
225
+ origSz: string;
226
+ triggerCondition: string;
227
+ isTrigger: boolean;
228
+ triggerPx: string;
229
+ isPositionTpsl: boolean;
230
+ reduceOnly: boolean;
231
+ orderType: string;
232
+ tif: string | null;
233
+ cloid: string | null;
234
+ }
213
235
  export interface InfoRequest {
214
236
  type: string;
215
237
  user?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../scripts/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../scripts/core/types.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,35 @@ export declare function normalizeCoin(coin: string): string;
45
45
  * Sleep for specified milliseconds
46
46
  */
47
47
  export declare function sleep(ms: number): Promise<void>;
48
+ /** Hyperliquid rejects orders below this notional (waived for reduce-only). */
49
+ export declare const MIN_ORDER_NOTIONAL_USD = 10;
50
+ export type ParsedOrderStatus = {
51
+ kind: 'resting';
52
+ oid: number;
53
+ } | {
54
+ kind: 'filled';
55
+ totalSz: number;
56
+ avgPx: number;
57
+ oid: number;
58
+ }
59
+ /** normalTpsl children behind an unfilled parent — success states, not errors. */
60
+ | {
61
+ kind: 'waiting';
62
+ state: 'waitingForFill' | 'waitingForTrigger';
63
+ } | {
64
+ kind: 'error';
65
+ error: string;
66
+ } | {
67
+ kind: 'unknown';
68
+ raw: unknown;
69
+ };
70
+ /**
71
+ * Parse a single entry of an order response's `statuses` array. Handles the
72
+ * plain-string success states ("waitingForFill" / "waitingForTrigger") that
73
+ * Hyperliquid returns for normalTpsl children armed behind an unfilled parent,
74
+ * alongside the usual resting/filled/error objects.
75
+ */
76
+ export declare function parseOrderStatus(status: unknown): ParsedOrderStatus;
48
77
  /**
49
78
  * Generate a random client order ID
50
79
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../scripts/core/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,MAAM,CAM7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,GAClB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,SAAS,CAeX;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAGlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGxE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAmB1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACrG,OAAO,CAAC,OAAO,CAAC,CAYlB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../scripts/core/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,MAAM,CAM7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,GAClB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,SAAS,CAeX;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAGlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGxE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAmB1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AACjE,kFAAkF;GAChF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAkBnE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACrG,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -112,6 +112,33 @@ export function normalizeCoin(coin) {
112
112
  export function sleep(ms) {
113
113
  return new Promise(resolve => setTimeout(resolve, ms));
114
114
  }
115
+ /** Hyperliquid rejects orders below this notional (waived for reduce-only). */
116
+ export const MIN_ORDER_NOTIONAL_USD = 10;
117
+ /**
118
+ * Parse a single entry of an order response's `statuses` array. Handles the
119
+ * plain-string success states ("waitingForFill" / "waitingForTrigger") that
120
+ * Hyperliquid returns for normalTpsl children armed behind an unfilled parent,
121
+ * alongside the usual resting/filled/error objects.
122
+ */
123
+ export function parseOrderStatus(status) {
124
+ if (status === 'waitingForFill' || status === 'waitingForTrigger') {
125
+ return { kind: 'waiting', state: status };
126
+ }
127
+ if (status && typeof status === 'object') {
128
+ const data = status;
129
+ if (data.resting) {
130
+ return { kind: 'resting', oid: data.resting.oid };
131
+ }
132
+ if (data.filled) {
133
+ const f = data.filled;
134
+ return { kind: 'filled', totalSz: parseFloat(f.totalSz), avgPx: parseFloat(f.avgPx), oid: f.oid };
135
+ }
136
+ if (data.error) {
137
+ return { kind: 'error', error: String(data.error) };
138
+ }
139
+ }
140
+ return { kind: 'unknown', raw: status };
141
+ }
115
142
  /**
116
143
  * Generate a random client order ID
117
144
  */
package/dist/core/ws.d.ts CHANGED
@@ -159,6 +159,11 @@ export declare class WebSocketManager {
159
159
  subscribeAllMids(): Promise<ISubscription>;
160
160
  /**
161
161
  * Subscribe to L2 order book snapshots for a specific coin.
162
+ *
163
+ * `fast: true` = 5 levels every 0.5s; without it the API degrades to 20 levels
164
+ * every 5s (per the 2026-07 network-upgrade announcement). Every consumer here
165
+ * reads top-of-book only (chase / mm quoting / mid fallback), so fast wins;
166
+ * anything needing depth should use the REST l2Book, which stays full-depth.
162
167
  */
163
168
  subscribeL2Book(coin: string): Promise<ISubscription>;
164
169
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../scripts/core/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../scripts/core/ws.ts"],"names":[],"mappings":"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"}
package/dist/core/ws.js CHANGED
@@ -114,13 +114,10 @@ export class WebSocketManager {
114
114
  return this.client;
115
115
  }
116
116
  trackSub(sub) {
117
+ // SDK ≥0.33 dropped ISubscription.failureSignal, so a sub that dies after a
118
+ // failed resubscribe stays in this list; close() swallows unsubscribe errors,
119
+ // so a dead handle there is harmless.
117
120
  this.subscriptions.push(sub);
118
- sub.failureSignal.addEventListener('abort', () => {
119
- this.log('Subscription failed, removing from tracked list');
120
- const idx = this.subscriptions.indexOf(sub);
121
- if (idx >= 0)
122
- this.subscriptions.splice(idx, 1);
123
- });
124
121
  return sub;
125
122
  }
126
123
  // ── Market data subscriptions ──────────────────────────────────
@@ -136,10 +133,15 @@ export class WebSocketManager {
136
133
  }
137
134
  /**
138
135
  * Subscribe to L2 order book snapshots for a specific coin.
136
+ *
137
+ * `fast: true` = 5 levels every 0.5s; without it the API degrades to 20 levels
138
+ * every 5s (per the 2026-07 network-upgrade announcement). Every consumer here
139
+ * reads top-of-book only (chase / mm quoting / mid fallback), so fast wins;
140
+ * anything needing depth should use the REST l2Book, which stays full-depth.
139
141
  */
140
142
  async subscribeL2Book(coin) {
141
143
  const client = this.ensureClient();
142
- const sub = await client.l2Book({ coin }, (data) => {
144
+ const sub = await client.l2Book({ coin, fast: true }, (data) => {
143
145
  this.emit('l2Book', {
144
146
  coin: data.coin,
145
147
  time: data.time,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../scripts/guardian/cli.ts"],"names":[],"mappings":""}