@syldel/hl-shared-types 0.0.18 → 0.0.20

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.
@@ -0,0 +1,60 @@
1
+ import { DecimalString } from '../common';
2
+ import { AccountAbstractionMode } from './account-abstraction.type';
3
+ /**
4
+ * ============================================================================
5
+ * LE COLLATÉRAL D'UN MARCHÉ : TROIS RÉPONSES, PAS UN NOMBRE
6
+ *
7
+ * Réponse de `GET /hyperliquid/info/collateral-balance` du gateway.
8
+ *
9
+ * Ce type vit ici parce qu'il **traverse** le réseau : le gateway le produit,
10
+ * le bot le consomme. Une copie de chaque côté finirait par diverger, et la
11
+ * divergence porterait sur un chiffre qui dimensionne des ordres.
12
+ *
13
+ * Trois cas, parce que leurs remèdes sont trois : approvisionner le compte,
14
+ * corriger le nom du marché, ou attendre que le registre soit synchronisé.
15
+ * Jusqu'au 2026-10-01 les trois rendaient `'0'`, donc aucun n'était
16
+ * distinguable d'un compte vide — et `'0'` sur un calcul de taille fait
17
+ * dimensionner un ordre sur un capital qui n'a jamais été lu.
18
+ * ============================================================================
19
+ */
20
+ export type CollateralBalance =
21
+ /** Le solde a été lu. `total` et `used` sont ceux du collatéral nommé. */
22
+ {
23
+ status: 'ok';
24
+ /** Le mode qui a décidé d'où le solde a été lu — spot, ou état perp du dex. */
25
+ mode: AccountAbstractionMode;
26
+ /** Symbole du collatéral, pour l'affichage et les journaux. */
27
+ collateral: string;
28
+ /**
29
+ * Index du token, qui fait autorité pour apparier un solde.
30
+ * `null` quand l'appelant a imposé un symbole plutôt qu'un index.
31
+ */
32
+ collateralToken: number | null;
33
+ total: DecimalString;
34
+ used: DecimalString;
35
+ }
36
+ /**
37
+ * Le collatéral est identifié, mais le compte ne porte aucune ligne pour lui.
38
+ *
39
+ * ⚠️ Ce n'est **pas** la même chose qu'un solde nul. Hyperliquid n'énumère
40
+ * que les actifs que le compte a touchés : une absence vaut probablement
41
+ * zéro, mais « probablement » ne se présente pas comme un solde.
42
+ */
43
+ | {
44
+ status: 'no-balance-entry';
45
+ mode: AccountAbstractionMode;
46
+ collateral: string;
47
+ collateralToken: number | null;
48
+ }
49
+ /**
50
+ * Le catalogue ne dit pas dans quoi ce marché se règle — nom inconnu, ou
51
+ * registre pas encore synchronisé.
52
+ *
53
+ * Aucune valeur de repli n'est fournie, et c'est le point : la table en dur
54
+ * que ce contrat remplace répondait « USDC » à cette question.
55
+ */
56
+ | {
57
+ status: 'unknown-collateral';
58
+ mode: AccountAbstractionMode;
59
+ asset: string;
60
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -3,3 +3,4 @@ export * from './portfolio.interfaces';
3
3
  export * from './l2Book.interfaces';
4
4
  export * from './active-asset.interfaces';
5
5
  export * from './account-abstraction.type';
6
+ export * from './collateral-balance.interfaces';
@@ -19,3 +19,4 @@ __exportStar(require("./portfolio.interfaces"), exports);
19
19
  __exportStar(require("./l2Book.interfaces"), exports);
20
20
  __exportStar(require("./active-asset.interfaces"), exports);
21
21
  __exportStar(require("./account-abstraction.type"), exports);
22
+ __exportStar(require("./collateral-balance.interfaces"), exports);
@@ -46,6 +46,29 @@ export interface HLPerpMeta {
46
46
  universe: HLPerpMarketInfo[];
47
47
  /** Margin configuration tables. */
48
48
  marginTables: HLPerpMarginTableEntry[];
49
+ /**
50
+ * Index du token qui sert de collatéral à **tout** ce dex — `0` pour USDC.
51
+ *
52
+ * C'est la correspondance dex → collatéral que l'exchange publie, et la seule
53
+ * qui ne vieillit pas. Les trois dépôts en tenaient jusqu'ici une copie en
54
+ * dur (`cash → USDT`, `hyna → USDE`, sinon USDC) : elle était **juste** quand
55
+ * elle a été écrite — les marchés Dreamcash s'appelaient bien `TSLA-USDT` et
56
+ * la marge HyENA était rendue en USDE — mais ces deux dex ont été éteints en
57
+ * juin et août 2026, et elle ne couvrait de toute façon que 2 des 10 dex
58
+ * déployés. Relevé le 2026-09-30 : les quatre dex vivants (`xyz`, `para`,
59
+ * `mkts`, `io`) rendent tous `collateralToken: 0`.
60
+ *
61
+ * Un `index`, et non un symbole : c'est ce que fait le calcul officiel du
62
+ * ratio de compte unifié, qui apparie ensuite `spotBalances[].token`. Deux
63
+ * tokens peuvent porter le même nom ; aucun ne partage un index. Le symbole
64
+ * se retrouve dans `spotMeta.tokens[].name`, pour l'affichage seulement.
65
+ *
66
+ * ⚠️ Optionnel, bien que l'API le rende sur tous les dex mesurés — y compris
67
+ * le principal : la doc de `meta` ne le montre pas dans son exemple (celle de
68
+ * `metaAndAssetCtxs`, si). Une réponse qui ne le porterait pas doit se
69
+ * traiter comme une absence de réponse, jamais comme « USDC par défaut ».
70
+ */
71
+ collateralToken?: number;
49
72
  }
50
73
  /**
51
74
  * Market metadata including its index in the universe list.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syldel/hl-shared-types",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "Shared TypeScript interfaces and types for Hyperliquid integration.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",